Защита SecuROM

Тема в разделе "WASM.RESEARCH", создана пользователем gopNick, 25 авг 2004.

  1. gopNick

    gopNick New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2004
    Сообщения:
    4
    Лирика:



    Товарисч на работе спит и видит 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'ом. - Мне об этом сказал тот самый товарисч , который перерыл всю сеть в поисках кряка и где то вычитал это.
     
  2. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
  3. gopNick

    gopNick New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2004
    Сообщения:
    4
    Спасибо, но это всё , насколько я понял поможет только если есть оригинальный CD, который необходимо скопировать так, шоб защита не верещала на скопированный диск.

    А у нас уже скопированный, купленный на радиорынке :) и на него защита после накатывания патча начинает ругацца.
     
  4. gopNick

    gopNick New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2004
    Сообщения:
    4
    Кстати, вот тут вот отладчик накрываецца "медным тазом"



    .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]
     
  5. volodya

    volodya wasm.ru

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

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    gopNick

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



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

    gopNick New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2004
    Сообщения:
    4
    Так-с , - не хочу ни кого обидеть - но ничего нового никто не сказал. Пока бох с ним - с этим куском кода ..

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



    Едет отец с ребенком на машине:

    Ребенок - папа, смотри - мужик палкой машет.

    Папа останавливаецца.

    Ребенок - а ты чего остановился?

    Папа - сын, - это гаишник, поэтому я и остановился.



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



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

    ozzman New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2004
    Сообщения:
    56
    потрассируй до 005C848E, затем в айсе r eip 005C8491, дальше так же, просто перепрыгивай int 3.
     
  9. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    На сколько я помню некоторое время назад я возился с етим типом защиты, но так ни чего толком и ненашел!!! Нашел 2 статьи по поводу защиты и дошол до OEP но не смог востановить импорт Dr.Golova сказал что там манглед импорт, но так как я писать dll толком не умел я сел в лужу. До OEP добраться можно с помощью bpx writteprocessmemory хотя сейчас точно и не помню что за бряк ну что-то очень похожее так там надо было брать куски расшифрованого кода и впихивать их в dump.exe их там будет 25 или 26 кусков а после там надо было сделать джамп на примерно такой код
    Код (Text):
    1.  
    2.       mov eax,*
    3.       jump eax<---А нам надо было быть сдесь
    4.       mov eax,*
    5.       jump eax<---При тарсировке мы попадали вот сюда


    дальше смело трасируем и находим OEP

    А как востановить импорт х.з.



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