Лирика: Товарисч на работе спит и видит 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'ом. - Мне об этом сказал тот самый товарисч , который перерыл всю сеть в поисках кряка и где то вычитал это.
На и не мучься. http://www.gameburnworld.com/securompatches.htm http://www.gamecopyworld.com/securom.htm http://forums.afterdawn.com/thread_view.cfm/43802
Спасибо, но это всё , насколько я понял поможет только если есть оригинальный CD, который необходимо скопировать так, шоб защита не верещала на скопированный диск. А у нас уже скопированный, купленный на радиорынке и на него защита после накатывания патча начинает ругацца.
Кстати, вот тут вот отладчик накрываецца "медным тазом" .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]
По тому кусочку кода, что ты привел, особо ничего не скажешь. Очевидно, считается контрольная сумма какого-то региона (скорее всего, регион кода). Считается просто по- идиотски. В esi на выходе должно быть 0A27h. Ну что тут можно сказать? Если тебя даже такие клочки в штопор ставят, то возьми себе для разминки что-нибудь попроще.
gopNick > Кстати, вот тут вот отладчик накрываецца "медным тазом" Ага, как только увидит int 3 то сразу накрывается ))
Так-с , - не хочу ни кого обидеть - но ничего нового никто не сказал. Пока бох с ним - с этим куском кода .. В плане того что в нём происходит (шоб было понятно) я вижу пока следующим образом (объясню по аналогии): Едет отец с ребенком на машине: Ребенок - папа, смотри - мужик палкой машет. Папа останавливаецца. Ребенок - а ты чего остановился? Папа - сын, - это гаишник, поэтому я и остановился. Вобщем - мне папы не хватает, потому что что делают mov,dec, jmp, int и т.д. - я в курсе, если кто не догадался. Таких кусов там море. Трассировать невозможно. То что видно в отладчике , с тем что видно в IDA в дампе - местами прилично расходицца - но эт опять общие слова без конкретики.
На сколько я помню некоторое время назад я возился с етим типом защиты, но так ни чего толком и ненашел!!! Нашел 2 статьи по поводу защиты и дошол до OEP но не смог востановить импорт Dr.Golova сказал что там манглед импорт, но так как я писать dll толком не умел я сел в лужу. До OEP добраться можно с помощью bpx writteprocessmemory хотя сейчас точно и не помню что за бряк ну что-то очень похожее так там надо было брать куски расшифрованого кода и впихивать их в dump.exe их там будет 25 или 26 кусков а после там надо было сделать джамп на примерно такой код Код (Text): mov eax,* jump eax<---А нам надо было быть сдесь mov eax,* jump eax<---При тарсировке мы попадали вот сюда дальше смело трасируем и находим OEP А как востановить импорт х.з. Может кто на этот раз подскажет??? или даже поможет чтобы хотябы знать как с ним боротся!!!!