![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Исследование Текстового перекодировщика Штирлиц версия 4.0Delphi , Программа и Интерфейс , Исследование программИсследование Текстового перекодировщика Штирлиц версия 4.0
Оформил: DeeCo 1) WDAsm 2) Hex editor (HView). И вновь я говорю вам здрасте, дорогие мои читатели. Вот попалась мне в руки чудесная программка, которая настолько хитро перекодирует текстовые файлы, что вы не запутаетесь в различных русских кодировках. Мне она понравилась, если бы не огромный баннер в правом нижнем углу, который существует в течении минуты с момента создания и всячески мешает мне работать. Непорядок. Я взял файл Shtirlitz.exe и дизассемблировал его в WDAsm. Затем зашёл в String Reference и начал искать подозрительный текст... И нашёл!!! строку : "Shtirlitz.Banner" Дважды кликаю на неё и попадаю сюда: :00401924 FF1594954400 Call dword ptr [00449594] :0040192A 50 push eax :0040192B 6800080000 push 00000800 * Possible StringData Ref from Data Obj ->"Shtirlitz.Banner" | :00401930 68D0004400 push 004400D0 :00401935 B928764400 mov ecx, 00447628 :0040193A E836530000 call 00406C75Судя по вызываемым функциям (GetTickCOunt, SetTimer) мы в процедуре обработки баннерного состояния :) Теперь посмотрим чуть выше: * Referenced by a CALL at Address: |:0040182A <-- Вот из этого адреса вызывается процедура | :00401911 55 push ebp :00401912 8BEC mov ebp, esp :00401914 83EC1C sub esp, 0000001CИдём по адресу 0040182A, с которого вызывается эта функция и видим: :0040182A E8E2000000 call 00401911 <--вызываем процедуру обработки баннера :0040182F 84C0 test al, al :00401831 750E jne 00401841 <--если все ОК - прыгаемВот то что нам надо, а что если jne 00401841 на jne 00401833 и тогда программа будет всегда думать, что время баннера истекло. так и есть, я заменил в HView jne 00401841 на jne 00401833, т.е. теперь программа не будет в любом случае прыгать на процедуру вывода баннерного окна. Но программа при запуске начала ругаться, что исполняемый модуль был изменён. Значит в программе есть CRC проверка. Будем копать дальше. Запустим программу с помощью SymbolLoader'a из пакета SoftIce, чтобы оказаться в самом начале программы, затем скролим (не заходя в функции) до этого места: :00435CE3 FF151C974400 Call dword ptr [0044971C] :00435CE9 50 push eax :00435CEA E83D0CFDFF call 0040692C <-- Подозрительная функция :00435CEF 8945A0 mov dword ptr [ebp-60], eax :00435CF2 50 push eax :00435CF3 E808FDFFFF call 00435A00 <--это конец программе :00435CF8 EB21 jmp 00435D1BИз того, что функция call 00435A00 делает полный каюк программе я заключил, что перед ней функция call 0040692C что-то представляет из себя! Я зашёл в неё (F8) и оказался тут: :0040692C 8B0D88734400 mov ecx, dword ptr [00447388] :00406932 85C9 test ecx, ecx :00406934 7414 je 0040694A :00406936 FF742410 push [esp+10] :0040693A 8B01 mov eax, dword ptr [ecx] :0040693C FF742410 push [esp+10] :00406940 FF74240C push [esp+0C] :00406944 FF10 call dword ptr [eax] <--что-то скрывают?Их того, что больше функций нет, я предположил, что функция call dword ptr [eax] тоже очень странна! Я опять зашёл в неё и оказался тут: Это оказалось самое главное: :0041FC4E 55 push ebp :0041FC4F 8BEC mov ebp, esp :0041FC51 83EC1C sub esp, 0000001C :0041FC54 53 push ebx :0041FC55 56 push esi :0041FC56 57 push edi :0041FC57 8BF9 mov edi, ecx :0041FC59 FF7510 push [ebp+10] :0041FC5C FF750C push [ebp+0C] :0041FC5F FF7508 push [ebp+08] :0041FC62 E84D6EFEFF call 00406AB4 :0041FC67 84C0 test al, al :0041FC69 745C je 0041FCC7 :0041FC6B 8BCF mov ecx, edi :0041FC6D E8E9060000 call 0042035B :0041FC72 8BCF mov ecx, edi :0041FC74 E80F070000 call 00420388 :0041FC79 84C0 test al, al :0041FC7B 754A jne 0041FCC7 :0041FC7D 8BCF mov ecx, edi :0041FC7F E80B030000 call 0041FF8F :0041FC84 84C0 test al, al :0041FC86 743F je 0041FCC7 :0041FC88 68A9010000 push 000001A9 :0041FC8D E8A2040000 call 00420134 :0041FC92 59 pop ecx :0041FC93 50 push eax :0041FC94 E8074B0100 call 004347A0 :0041FC99 59 pop ecx :0041FC9A 8BF0 mov esi, eax :0041FC9C 8BCF mov ecx, edi :0041FC9E E8B9030000 call 0042005C <--Процедура генерации CRC :0041FCA3 663BC6 cmp ax, si <--в ax - сгенерированный CRC, а в si - правильный (0x8560) :0041FCA6 7426 je 0041FCCE <--если совпадают - прыгаем через сообщение о неверном CRCЗдесь необходимо заменить je 0041FCCE на jmp 0041FCCE, чтобы программа всегда думала, что CRC правильный. Я сделал все необходимые изменения, но при запуске программы главное окно появилось и тут же закрылось, получив всего 5 сообщений (WM_???). Так, Так, Так! Значит программа где-то ещё делает проверку! Я в этом месте немного помучался, но потом пошел старым и проверенным способом: запустил программу в SymbolLoader'e и начиная с адреса 0041FC4E прошёлся по НЕ изменнённой программе отладчиком, записав все условные переходы. Затем то же самое проделал с изменённой программой, сравнивая условные переходы с неизменённой программой. И очень скоро по адресу 0041FE9B я натолкнулся на расхождение: :0041FE9B 750B jne 0041FEA8 <--кракнутая программа здесь прыгала, в то время как НЕ кракнутая - НЕ прыгала :0041FE9D 8B45FC mov eax, dword ptr [ebp-04] :0041FEA0 3B05E0314400 cmp eax, dword ptr [004431E0] :0041FEA6 7412 je 0041FEBA <--кракнутая - не прыгает, не кракнутая - прыгает!Ура! Я нашёл вторую проверку на некракнутость! Теперь я просто заменил jne 0041FEA8 на jne 0041FE9D, а je 0041FEBA на jmp 0041FEBA и........Все заработало! Ура! Баннера больше нет! И ни на что программа не жалуется!!! ВсЁ! А для самых маленьких крак: ----------Начало крака---------------- Shtirlitz v4.0 Cracker by vallkor (vallkor@chat.ru) Shtirl~1.exe 00000C32: 0E 00 0001F0A6: 74 EB 0001F29C: 0B 00 0001F2A6: 74 EB ---------- Конец Крака ----------------Исследовал и наваял туториал: vallkor//PTDS E-mail: vallkor@chat.ru Page : http://vallkor.chat.ru
Исследование Текстового перекодировщика Штирлиц версия 4.0: автор программы, DeeCo, создал инструмент для обхода текстовых файлов с использованием SoftIce, WDAsm и Hex editor (HView), который позволяет заменить баннерное сообщение в программе Shtirlitz.ex Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |