RCE.SU - реверсинг, кодинг, выделенные сервера, ICQ, proxy

Исследование Feuer's NFO File Maker V1.5 Pro

Description : [WIN] Feuer's NFO File Maker V1.5 Pro
Crack subject : ASProtect, SoftIce detection, time limit (30 days), some other restrictions
Crack made by : Runtime_err0r
Crack made at : 28-06-2003
Comments : http://feuerrader.nm.ru/
Protection : ( )Beginner (X)Intermediate ( )Advanced ( )Expert
Time for hack : 00:20
Type of hack : Bit hack
Used packer : ASProtect
Used unpacker : Stripper 2.03
File size : 407040 bytes
Src language : Delphi
Price : 300 Rub.
Used tools : PEiD, Stripper 2.03, DEDE 3.50.02, TRW2000 1.23, HIEW 6.83
Under Music : Radio ULTRA (100.5 FM)


Внимание !!!
Данная статья носит образовательный характер и предназначена для разработчиков программных защит.
Автор не несёт никакой ответственности за возможное использование материалов данной статьи в противозаконных целях.


Я как увидел на сайте Feuer'а анонс новой версии программы, у меня прям аж эти зачесались (руки, а не то, что вы подумали :-))). Как верно заметил автор в своей же гостевой книге:

Вроде мой NFO Maker не прога, а крякмис :)) Все хотят не прогу иметь, а лишь бы сломать ее. Да я знаю почему - защита интересная. Надоели уже всем проги, ломамаемые за 5 минут. Скоро выйдет Feuer's NFO File Maker 1.5 Professional. Обещаю, что он будет лучше 1.2 во всех отношениях...

Крякмис оказался так себе - я его сломал за 20 минут, к тому же автор оставил для нас (cracker'ов) несколько приятных сюрпризов.

Прежде всего смотрим, чем прога запакованна, PEiD показал: ASProtect 1.2x / ASProtect 1.3 -> Alexey Solodovnikov. Я не стал заморачиваться, а сразу натравил не неё Stripper 2.03 by Syd (http://www.is.svitonline.com/syd)... распаковалось без проблем !!!

После этого я сразу же перезагрузился в Windows 98, так как привык работать в TRW2000 да и в программе присутствует защита от SoftIce, но об этом позже. Итак, распакованный EXE'шник естейственно не запускается :-(, ладно, грузим его в TRW и начинаем трассировать... вот тут начинается самое интересное:

0167:004AA28A  CALL     004A9DD0              ; проверка на наличие SoftIce
0167:004AA28F  TEST     AL,AL                 ; я юзал TRW, поэтому проскочил
0167:004AA291  JZ       004AA2B1              ; её без проблем
0167:004AA293  PUSH     BYTE +10
0167:004AA295  PUSH     DWORD 004AA4E4
0167:004AA29A  MOV      EAX,[004AEDF4]
0167:004AA29F  CALL     00404B28
0167:004AA2A4  PUSH     EAX
0167:004AA2A5  PUSH     BYTE +00
0167:004AA2A7  CALL     `USER32!MessageBoxA`
0167:004AA2AC  CALL     00404588
0167:004AA2B1  LEA      EDX,[EBP-14]
0167:004AA2B4  MOV      EAX,[EDI]
0167:004AA2B6  CALL     0045E8F8
0167:004AA2BB  MOV      EAX,[EBP-14]
0167:004AA2BE  CALL     0045F890              ; а eax - резмер файла
0167:004AA2C3  CMP      EAX,0007A12B          ; если меньше 7A12Bh  
0167:004AA2C8  JNG      004AA2CF              ; до свидания ...
тут у меня возник резонный вопрос: 7A12Bh = 500011 байт, но ведь размер исходного файла 407040 байт ??? Дело в том, что прога не проверяет CRC, а только проверяет размер файла, если он больше 500 Кб - значит распакованна. Попробуем-ка её запаковать UPX'ом (только сначала надо сделать копию!):
> upx.exe --force _NFOMaker.exe 
в результате сжатый файл получился даже меньше оригинального ! и запускается он без проблем (первый приятный сюрприз!). К тому же здесь нас ожидает второй приятный сюрприз: для отсчёта триала автор заюзал API ASprotect'а, так что после распаковки триал исчез сам собой, и NAG скрин с просьбой зарегистрироваться тоже куда-то делся :-) .

Но это ещё не всё - программа не позволяет создавать полноценный NFO'шник - вместо ASCII-графики пихает в него всякую гадость, про незарегистрированную версию. Ну ничё, теперь самое время применить DEDE. Распакованый EXE'шник он у меня почему-то не схвал, поэтому я просто запустил оригинальный файл и сделал в DEDE "Dump Active Process". После окончания анализа выбираем форму Tmain и кликаем по событию Saveas1Click, DEDE выдала довольно длинный листинг, я не стал заморачиваться, а просто поставил бряк на первую инструкцию этой подпрограммы (4A6010) и стал её трассировать, меняя по ходу все условные переходы на противоположные, и смотрел, что получается... В результате опытным путём было установленно, что проверка на зарегистрированность происходит тут:

 
* Reference to : TApplication._PROC_0045F87C()
|
004A60B3   E8C497FBFF             call    0045F87C
004A60B8   85C0                   test    eax, eax
004A60BA   0F86E6020000           jbe     004A63A6
004A60C0   8B03                   mov     eax, [ebx]
Надо сделать так, чтобы эта функция всегда возвращала 1, берём распакованный файл _NFOMaker.exe (не сжатый UPX'ом !!!) и вносим в него небольшие изменения:
Было: 
 .0045F87C: 97                           xchg        edi,eax
 .0045F87D: 92                           xchg        edx,eax
 .0045F87E: 83C9FF                       or          ecx,-001 ;"."
 .0045F881: 31C0                         xor         eax,eax
 .0045F883: 39F8                         cmp         eax,edi
 .0045F885: 7406                         je         .00045F88D  -----. (1)

Стало: 
 .0045F87C: B801000000                   mov         eax,000000001 ;"   ."
 .0045F881: C3                           retn
 .0045F882: C039F8                       sar         b,[ecx],0F8 ;"°"
 .0045F885: 7406                         je         .00045F88D  -----. (1)
Теперь сжимаем файл UPX'ом, запускаем и видим третий приятный сюрприз: оказывается эта процедура полностью отвечает за регистрацию - теперь внизу вместо надписи "You have X day(s) left" написанно "Registered to:" и никаких ограничений больше нет !

Rambler's Top100