Сейчас на форуме: _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Помогите разломать защиту
Посл.ответ Сообщение

Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 14:56
· Личное сообщение · #1

Вот програма http://setup.shareman.tv/SharemanSetup.exe
Глядел PEID показал, что защита UPX, распаковалась самим UPX, но не работает. Скорее всего там какаето еще есть зашита, как ее вычислить? Помогите кто умеет



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 17 июня 2011 15:17 · Поправил: HandMill
· Личное сообщение · #2

Terminate, "основная программа" или какие-то нужные данные находятся "в хвосте" или как он правильно называется в оверлее. Об этом свидетельствует результат сканирования PEiD следующим образом:
UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo [Overlay]
После распаковки оригинальный UPX оверлей удаляет, поскольку эти данные не имеют никакого отношения к оригинальному файлу.
В Вашем случае обращение к оверлею реализовано авторами этой программы очень криво, и для "обхода" самозащиты достаточно проделать следующее:
В папке программы храним файл "shareman.exe" в оригинальном, запускающемся виде(РАСПАКОВЫВАТЬ НЕ НУЖНО!). Затем делаем его копию с именем файла(например) "u_shareman.exe" и этот файл распаковываем при помощи UPX. При запуске "u_shareman.exe" будет искать оверлей в файле "shareman.exe" который в коде программы видимо "жёстко" прописан. Сам "shareman.exe" в процессе работы программы "u_shareman.exe" запускаться не должен.
Удачи в исследовании "u_shareman.exe"!

-----
все багрепорты - в личные сообщения




Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 15:43
· Личное сообщение · #3

Да,есть там оверлей,но UPX не режет оверлей, он присутствует и в распакованном файле, а как можно поймать момент, когда прога читает оверлей?



Ранг: 5.5 (гость), 3thx
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 15:44 · Поправил: Wally
· Личное сообщение · #4

Достаточно прикрутить оверлей к расспакованному файлу и всё будет работать
П.С
Понял, расспакованный файл нехочет соединятся с инетом



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 15:45
· Личное сообщение · #5

А куда его прикручивать в распакованном, если он там уже есть?



Ранг: 5.5 (гость), 3thx
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 16:01 · Поправил: Wally
· Личное сообщение · #6

/*8CF472*/ MOV EAX,[EBP] =======> crc1
/*8CF475*/ PUSH EAX
/*8CF476*/ CALL 00487860======>ws2_32.ntohl
/*8CF47B*/ MOV [EBP],EAX
/*8CF47E*/ MOV EAX,[EBP+4]=====> crc2
/*8CF481*/ PUSH EAX
/*8CF482*/ CALL 00487860======>ws2_32.ntohl
/*8CF487*/ MOV [EBP+4],EAX
/*8CF48A*/ MOV EAX,[EBP+8]=====> crc3
/*8CF48D*/ PUSH EAX
/*8CF48E*/ CALL 00487860======>ws2_32.ntohl
/*8CF493*/ MOV [EBP+8],EAX
/*8CF496*/ MOV EAX,[EBP+C]=====> crc4
/*8CF499*/ PUSH EAX
/*8CF49A*/ CALL 00487860======>ws2_32.ntohl
/*8CF49F*/ MOV [EBP+C],EAX
/*8CF4A2*/ MOV EAX,[EBP+10]====> crc5
/*8CF4A5*/ PUSH EAX
/*8CF4A6*/ CALL 00487860======>ws2_32.ntohl


crc1 4EF54720
crc2 9E78033D
crc3 958A3A94
crc4 3BA38A09
crc5 291DC717



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 16:11
· Личное сообщение · #7

А коментарий можно? Что это за адреса?



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 июня 2011 18:49
· Личное сообщение · #8

HandMill пишет:
В папке программы храним файл "shareman.exe" в оригинальном, запускающемся виде(РАСПАКОВЫВАТЬ НЕ НУЖНО!). Затем делаем его копию с именем файла(например) "u_shareman.exe" и этот файл распаковываем при помощи UPX. При запуске "u_shareman.exe" будет искать оверлей в файле "shareman.exe" который в коде программы видимо "жёстко" прописан. Сам "shareman.exe" в процессе работы программы "u_shareman.exe" запускаться не должен.

не работает такой подход



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 18 июня 2011 03:19
· Личное сообщение · #9

Непонятно, что не получается? Распакованный запускается точно так же как и запакованный, нет там никаких защит. В оверлее обычный rar-архив. Отрезай и запускай установку из архива.



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 18 июня 2011 09:27
· Личное сообщение · #10

Wally пишет:
Понял, расспакованный файл нехочет соединятся с инетом

у меня и упакованный не хочет соединяться с интернетом(ниже видео, на котором я это показал)
Terminate пишет:
не работает такой подход

А, да, вы правы. Тут не нужно абсолютно никакого подхода! Что-то я вашим словам изначально сильно доверял и не проверил ваши действия. Распаковав upx файл нормально запускается.
Видео: http://rghost.ru/11404681
Что я делаю не так?

-----
все багрепорты - в личные сообщения





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 18 июня 2011 09:31
· Личное сообщение · #11

Топикстартер начинает утомлять, сам ничего не сделал и ничего у него не получается. Если так продолжится, топик закроется, а автор отправится либо читать статьи, либо в запросы.



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 18 июня 2011 11:03
· Личное сообщение · #12

HandMill пишет:
у меня и упакованный не хочет соединяться с интернетом

Серверы в Екатеринбурге перегружены запусками этой проги



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 июня 2011 15:23
· Личное сообщение · #13

Запускаться файл запускается, но не соединяется с сервером в распакованном виде.
Там он видимо считает размер файла и либо его сверяет с чемто или отправляет на сервер.
008D3053 |. E8 948CB3FF CALL Shareman.0040BCEC вот сдесь вроде считает.
Как посмотреть, что в оверлее, не зря же он там.



Ранг: 5.5 (гость), 3thx
Активность: 0.010
Статус: Участник

Создано: 18 июня 2011 15:42
· Личное сообщение · #14

Вот расспакованный и пропатченный моим способом --> Link <--



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 июня 2011 16:01
· Личное сообщение · #15

Пока не соединяется, но может сервер загружен, у меня бывает такое на 3G модеме. А можно поподробнее, что ты там пропатчил? И запакованный файл должен быть обязательно в папке?



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 18 июня 2011 19:40
· Личное сообщение · #16

Когда народ научится задавать вопросы?

Terminate
Кривая прога для кривого сервиса (распакована, соединяется с сервером и даже вроде как работает) : http://rghost.ru/11459691
В моем случае запакованный обязательно должен лежать рядом под своим именем. Имя распакованного неважно, но во избежание непроверенных косяков, лучше не делать его короче оригинального.



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 июня 2011 20:19
· Личное сообщение · #17

Я уже боюсь задавать вопросы
Но всеже хотелось бы знать чо ты там подправил? Все говорят.что защита кривая, но никто не может обьяснить что там за защита
Как я понял там вся фигня с размером файла, но если подсунуть ему размер запакованного файла, он всё равно не соединяеться, значит чтото еще он палит



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 18 июня 2011 21:05
· Личное сообщение · #18

Terminate пишет:
Как я понял там вся фигня с размером файла

Там фигня не с размером файла, а с любой его модификацией. Я не разбирался подробно, как там это делается. В общих чертах, считывается файл с диска, подсчитывается его crc и сравнивается со значениями, лежащими в оверлее (наверное). Я просто в нужный момент подменяю путь, чтобы с диска брался запакованный. Хотя мне не совсем понятно, зачем его вообще распаковывать, и что там собрались менять.Terminate пишет:
Все говорят.что защита кривая

Это нельзя назвать защитой от целенаправленного взлома, скорее против модификации вируснёй.



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 июня 2011 21:21
· Личное сообщение · #19

Если его распаковать, можно поменять ресурсы
Но сейчас меня больше интересует оверлей, как вообще можно посмотреть оверлей, ollydbg его вроде не показывает, как поймать момент когда к нему идет обращение?



Ранг: 22.4 (новичок), 19thx
Активность: 0.020
Статус: Участник

Создано: 18 июня 2011 23:06
· Личное сообщение · #20

оверлэй грузицо в буфер, будит между стеком и динамической паметью. отвавливай при обращеньи к файлу. потом бряки на паметь,

Code:
  1. 0040373A    E8 A1E50000     CALL 00411CE0                            ; JMP to kernel32.GetModuleFileNameA
  2. 0040373F    68 04314100     PUSH 413104
  3. 00403744    68 F1204100     PUSH 4120F1                              ; ASCII "sfxname"




Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 19 июня 2011 15:01
· Личное сообщение · #21

Terminate
Оверлей можно посмотреть в любом hex-редакторе. В оле только после загрузки файла с диска в память. Для загрузки могут использоваться разные API: ReadFile, MapViewOfFile. Порядок действий в общем случае примерно такой: В оле по Ctrl+N выводится список всех импортируемых функций. Ищешь там все вхождения указанных функций, и на каждом правой кнопкой - set breakpoint on every reference (после лучше убрать брейкпойнты с переходников, дабы не путались). Запускаешь выполнение, когда прервешься, вникаешь в параметры API. Например, для ReadFile важными для тебя будут первые три. Во первых, хэндл файла, по его значению в окне хэндлов определяешь, тот ли файл будет читаться. Далее буфер - начальный адрес, куда файл будет считываться, здесь сразу можно вывести этот адрес в окне дампа. И размер считываемых данных (сравниваешь с полным размером фала на всякий случай). После отработки функции идешь в конец загруженных данных и находишь свой оверлей. Ставишь железный бряк доступа на первый байт оверлея и запускаешь программу на выполнение. Дальше уже по обстоятельствам.

Намек: заставить нормально работать распакованный (без наличия рядом нераспакованного) можно подменив результат обработки оверлея в распакованном на результат обработки в нераспакованном (или на результат обработки в файле, где подменяется путь). Надеюсь, понятно написал



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 июня 2011 16:50
· Личное сообщение · #22

Сделал как написано, но когда ставлю остановку на первый байт оверлея, останавливается на:
0040C39D |. 85C0 TEST EAX,EAX
Что я не понимаю что дальше, думал оверлей куда то будет считыватся
Как теперь убрать этот железный бряк на первый байт?



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 19 июня 2011 18:29
· Личное сообщение · #23

Что-то ты не то сделал. По твоему адресу проверяется итог отработки ReadFile, есть ошибка или нет. Скорее всего бряк не там поставил. Опиши свои действия подробней. По какому адресу у тебя грузится файл и по какому нахоится оверлей?



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 июня 2011 18:56
· Личное сообщение · #24

Как написано выше ищю вхождения функций ReadFile, их два:
Names in Shareman, item 559
008F1028=KERNEL32.ReadFile
008F16E0=KERNEL32.ReadFile
Ставлю на них set breakpoint on every reference
Запускаю, прерываюсь по адресу
0040C398 |. E8 ABC4FFFF CALL <JMP.&KERNEL32.ReadFile> ; \ReadFile
Смотрю хендл он соответствует файлу Shareman.exe, размер соответствует файлу, буфер Buffer=7F8E0018, открываю в дампе буфер, пусто.
Трасирую F8, попадаю в kernel32, после
7C80186F FF15 8C11807C CALL DWORD PTR DS:[<&ntdll.NtReadFile>] ; ntdll.ZwReadFile
В буфере файл, иду в конец, там вроде этого:
7FFA5400 .........................ШsЕjpS=Дoaў¦п°ЛйЇPEчF^&ИUт“Г=°»wuјА
7FFA5440 ©ѓ›“!vеЊCЇъZ‘xЄ¶ѕи‹&–8Й`эW/ЭХxГyXV°©
Ставлю на первый байт hardware, on access -> byte
Нажимаю F9 и останавливаюсь на
0040C39D |. 85C0 TEST EAX,EAX



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 19 июня 2011 19:33 · Поправил: SVLab
· Личное сообщение · #25

Ну, вобщем, почти всё так. Только оверлей начинается с 7ffa5418. Железные бряки снимаются в меню Debug>Hardware breakpoints. Что пишется в строке состояния после останова?

Да, еще, ты наверное не убрал бряк с переходника 00408848 $- FF25 E0168F00 JMP DWORD PTR DS:[<&KERNEL32.ReadFile>] ; kernel32.ReadFile
Убери и не будешь продираться через системную функцию.



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 июня 2011 21:17
· Личное сообщение · #26

Вот сейчас вроде нормально остановился на
0040311B . 8D4401 F8 LEA EAX,DWORD PTR DS:[ECX+EAX-8]
В строке:
Hardware breakpoint 1 at Shareman.0040311B - EIP points to next instruction
В eax адрес начала оверлея 7FFA5418
После F8 в eax последнии 8 байт оверлея
Потом цикл, считывается весь оверлей по 8 байт
Дальше непонятно что происходит, выхожу на
008D30FC |. 33DB XOR EBX,EBX ; Shareman.006C5450
В ebx 006C5450
Потом начинается какойто цикл там вроде какаето запись считывается начиная где-то с 012DCDC8
Тоесть это возможно и есть сравнение оверлея с каким то расчетом програмы?



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 19 июня 2011 21:50
· Личное сообщение · #27

Не понял, о каком цикле ты говоришь, но ты на верном пути. Тебе надо дойти до цикла с такими командами
Code:
  1. 008D3126   .  3310          XOR EDX,DWORD PTR DS:[EAX]
  2. 008D3128   .  8916          MOV DWORD PTR DS:[ESI],EDX

Оверлей не сравнивается, он ксорится с просчитанными ранее значениями, и результат пишется в [ESI]. Этот результат как-то используется потом для определения, модифицирован файл или нет. Если хочешь, посмотри, что там и как, я не разбирался. Чтобы программа заработала нормально, достаточно подменить этот результат (80 байт) на результат, который получается при считывании с диска запакованного файла.



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 июня 2011 22:05
· Личное сообщение · #28

Вот как раз эти команды которые ты написал и есть в этом цикле, чуть ниже переход, который этот цикл и устраивает:
008D3131 |.^\75 D0 \JNZ SHORT Shareman.008D3103
SVLab пишет:
но ты на верном пути

Как бальзам на душу, а то я уже прям растроился, что ничего не выходит.
Буду теперь сравнивать результаты распакованного и запакованного



Ранг: 5.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 20 июня 2011 17:03
· Личное сообщение · #29

Всем спасибо за советы и потраченное время! Всё получилось, нужный оверлей найден! Отдельное спасибо SVLab, за пенки в нужное направление


 eXeL@B —› Вопросы новичков —› Помогите разломать защиту
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати