· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Защита SecuROM

Посл.отвђт Сообщенiе


Дата: Авг 25, 2004 15:47:07

Лирика:

Товарисч на работе спит и видит Transport Giant с 1.2 патчем. После того как этот патч накатываешь - зараза начинает требовать оригинальный CD при запуске.

Наивные наблюдения:

1. После запуска основного transportgiant.exe он из себя в Temp вытаскивает новый экзешник с произвольным названием и запускает его.
2. После запуска этот новый экзешник вытаскивает из себя ажмь целых 3 dll-ки (название, слава те господи, каждый раз одно и тоже)
SIntf16.dll SIntf32.dll SIntfNT.dll

Чего я пытался:

1. Запихать этот новый экзешник в IDA - получил "хрен пойми чего".
2. Запустил его, потом с помощью LordPE - сделал dump и в свою очередь запихал его в IDA. Получил уже "что-то похожее", но всё равно "хрен пойми чего".
3. Нашел место в коде, где выкидываецца msgbox с сообщением "Wrong Disc inserted. Please insert the original disc into your CD/DVD drive"

Тут начались проблемы:
(использовался отладчик от MSVS 7.0 - гуссары, молчать! (по-крайней мере, пока))
1. BreakPoint (BP) поставленный в место msgbox "нормально срабатывал".
2. Начал выяснять откуда же мы попадаем в "это место", подумав, что вероятно, там есть проверка которую нужно "пропатчить" и "всё будет хорошо". Замечу , что место это нормальным sub'ом IDA "не окрестил".
3. Решив, что скорей всего проверка происходит посля какого нить вызова DeviceIoControl, я впендюрил break туда (непосредственно в kernel32). Оказалось, что вызываецца он 8 раз. Причем если после первых четырёх вызовов диска в сидюке нету - то мы получаем сообщение типа "вставте диск" , а потом следуют ыщо четыре вызова.
4. Тут я почти возрадовался и думаю щас натычу break'ов в экзешнике после каждого вызова DeviceIoControl и чего нить найду.
5. Натыкал. И вот тут начались проблемы. У отладчика поехала крыша (т.е. иногда он мне выдавал exeption, а иногда его посылали в такое "место исполнения", что человеческое "пошел ты на ..." отдыхает). Вобще канешн я подозревал, что это должно случицца ибо видел в IDA "на каждом шагу" загадочное
".lybhz:004233DE int 3 ; Trap to Debugger"

(Гуссары могут высказацца :)

"Ну ладно - не выпендривайтесь":
1. Оббегав, всё что можно, нашел таки DS 3.1.
2. Возрадовался, но не помогло.
3. Взял IceExt. Всё круто.
За исключением двух моментов вместо ожидаемого !protect int3 on я получил при исполнении кода
гору сообщений PROTECT: MeltICE
и не сумел включить !protect uef on с сообщением
error: unable resolve adress UnhandledExeptionFilter
А так же проблема с отладкой не решилась, ибо после срабатывания натыканных breakpoint'ов я получил (назавём это словом зацикливание SoftIce), т.е. msgbox я уже дождацца не мог.

Вооооот...

Тык чего собственно хотелось бы:
1. Узнать - чего (подозреваю, что 0x68 в protect.cpp - но вот на что??? - это вопрос!) я должен поправить в сорцах IceExt шоб он сумер резолвить адрес UEF. (у меня MS Server 2003). Т.е. из той инфы которая есть у Sten на сайте , я этого не понял. Точней видимо понял , но не так :). Потому что подумал что 0x68 - это "порядковый номер" UEF в kerkel32.dll , а у меня он (0x362). Вобщем изменив это и рекомпилировав - проблема не снялась. Так что видимо это не порядковый номер :).

2. Ну и послушать ваши предложения. Ибо уж и рад бросить , но потраченного времени жалко:)

P.S. почему же я решил что данная хрень защищена SecuROM'ом. - Мне об этом сказал тот самый товарисч , который перерыл всю сеть в поисках кряка и где то вычитал это.


Дата: Авг 25, 2004 21:52:53


Дата: Авг 26, 2004 13:59:10

Спасибо, но это всё , насколько я понял поможет только если есть оригинальный CD, который необходимо скопировать так, шоб защита не верещала на скопированный диск.
А у нас уже скопированный, купленный на радиорынке :) и на него защита после накатывания патча начинает ругацца.


Дата: Авг 26, 2004 15:42:20

Кстати, вот тут вот отладчик накрываецца "медным тазом"

.lybhz:005C8474 loc_5C8474: ; CODE XREF: .lybhz:005C8486j
.lybhz:005C8474 mov edi, [esp+14h]
.lybhz:005C8478 mov edi, [edi]
.lybhz:005C847A xor esi, edi
.lybhz:005C847C add dword ptr [esp+14h], 4
.lybhz:005C8481 dec word ptr [esp+10h]
.lybhz:005C8486 jnz short loc_5C8474
.lybhz:005C8488 cmp esi, 0A27h
.lybhz:005C848E jz short loc_5C8491
.lybhz:005C8490 int 3 ; Trap to Debugger
.lybhz:005C8491
.lybhz:005C8491 loc_5C8491: ; CODE XREF: .lybhz:005C848Ej
.lybhz:005C8491 mov edi, [esp+8]


Дата: Авг 26, 2004 18:21:37

По тому кусочку кода, что ты привел, особо ничего не скажешь. Очевидно, считается контрольная сумма какого-то региона (скорее всего, регион кода). Считается просто по- идиотски. В esi на выходе должно быть 0A27h. Ну что тут можно сказать? Если тебя даже такие клочки в штопор ставят, то возьми себе для разминки что-нибудь попроще.


Дата: Авг 26, 2004 18:50:07

gopNick
> Кстати, вот тут вот отладчик накрываецца "медным тазом"

Ага, как только увидит int 3 то сразу накрывается :-)))


Дата: Авг 27, 2004 14:58:16

Так-с , - не хочу ни кого обидеть - но ничего нового никто не сказал. Пока бох с ним - с этим куском кода ..
В плане того что в нём происходит (шоб было понятно) я вижу пока следующим образом (объясню по аналогии):

Едет отец с ребенком на машине:
Ребенок - папа, смотри - мужик палкой машет.
Папа останавливаецца.
Ребенок - а ты чего остановился?
Папа - сын, - это гаишник, поэтому я и остановился.

Вобщем - мне папы не хватает, потому что что делают mov,dec, jmp, int и т.д. - я в курсе, если кто не догадался.

Таких кусов там море. Трассировать невозможно. То что видно в отладчике , с тем что видно в IDA в дампе - местами прилично расходицца - но эт опять общие слова без конкретики.


Дата: Авг 27, 2004 16:28:46

потрассируй до 005C848E, затем в айсе r eip 005C8491, дальше так же, просто перепрыгивай int 3.


Дата: Авг 28, 2004 02:47:22 · Поправил: Cigan

На сколько я помню некоторое время назад я возился с етим типом защиты, но так ни чего толком и ненашел!!! Нашел 2 статьи по поводу защиты и дошол до OEP но не смог востановить импорт Dr.Golova сказал что там манглед импорт, но так как я писать dll толком не умел я сел в лужу. До OEP добраться можно с помощью bpx writteprocessmemory хотя сейчас точно и не помню что за бряк ну что-то очень похожее так там надо было брать куски расшифрованого кода и впихивать их в dump.exe их там будет 25 или 26 кусков а после там надо было сделать джамп на примерно такой код
      mov eax,*
      jump eax<---А нам надо было быть сдесь
      mov eax,*
      jump eax<---При тарсировке мы попадали вот сюда

дальше смело трасируем и находим OEP
А как востановить импорт х.з.

Может кто на этот раз подскажет??? или даже поможет чтобы хотябы знать как с ним боротся!!!!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.041