Исследование Feuer's NFO File Maker V1.5 ProCrack 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:" и никаких ограничений больше нет !
|