Как разблокировать аккаунты, защитить компьютер и стать хакером
Полезные инструменты

Ваш IP

Узнай свой IP адрес

Проверить сайт

Test tools by WebSitePulse

Генератор MD5

1. Введите строку Строка:


2. Копировать MD5:

Реклама

интернетИнструмент:

http://samlab.info/bokiv/mysoft/ollydbg110xp.zip

Исследуемая программа:

http://samlab.info/bokiv/cr/wintools_net_4_0_Classic.zip

Дата написания: 21.11.2006
Вместо предисловия:
Наконец-то пришли морозы и выпал снег, и появилось соответственно много свободного
времени для подобных дел, как написание этого мануала. Инлайн ASPack – это очень
просто, но я решил написать серию подобных статей и начать с самого неизощрённого.
В качестве объекта для инлайна я выбрал WinTools.net 4.0 – это самая старая версия этой
программы, которая у меня есть (не охота причинять ущерб, её автору, тренируясь на
новой версии).
Предварительный анализ и поиск цели:
Запускаем файл wintools.exe, появляется окно с просьбой зарегистрироваться (далее наг).
Более, нам ничего и не надо, осталось отловить его появление через отладчик и
разобраться, почему всё происходит именно так.
Взлом:
Грузим файл wintools.exe в OllyDBG v1.10 (далее Оля). Ставим бряк bp DialogBoxParamA
и нажимаем F9. Далее нажимаем F8 и держим, пока не появится наг, далее кликнем в нём
кнопку Next >>, и в Оле по F8 дойдём до ближайшей команды RETN.
77D48945 C2 1400 RETN 14
ещё одно нажатие F8 и мы попадём, из кода библиотеки windows, в код нашей программы.
00411816 CALL wintools.0043F194
0041181B CMP EAX,0
0041181E JNZ SHORT wintools.0041187A
00411820 PUSH 0
00411822 PUSH wintools.0043EB97
00411827 PUSH DWORD PTR DS:[4687FC]
0041182D PUSH wintools.0048995E
00411832 PUSH DWORD PTR DS:[452ECC]
00411838 CALL wintools.00451740 -> DialogBoxParamA
0041183D CMP EAX,0
По адресу 00411816 процедура проверяет регистрацию, и если её нет, то обнуляет регистр
EAX. А по адресу 0041181E условный переход кидает нас на код нага. Тут править ничего
не надо ищём в процедуре по адресу 00411816. Поставим на неё курсор и нажмём ENTER.
Установим Hardware бряк на 0043F194 для дальнейшего исследования этого кода.
(F10->Breakpoint->Hardware, on execution) Перезапустим программу (Ctrl+F2).
Hardware Breakpoint мы поставили потому что исследуем упакованную программу и
обычный Breakpoint (F2) просто сотрется при перезапуске.
0043F194 55 PUSH EBP
*** обрезано ***
0043F1CF CMP EAX,0
0043F1D2 JNZ SHORT 0043F1DE
0043F1D4 MOV EAX,0
0043F1D9 JMP 0043F3B1
*** обрезано ***
0043F371 JNZ 0043F3AC
0043F373 MOV DWORD PTR DS:[46BDCC],175
0043F37D MOV DWORD PTR DS:[46BDD0],2CE
0043F387 MOV DWORD PTR DS:[46BDD4],13A
0043F391 MOV DWORD PTR DS:[46BDD8],0B2
0043F39B MOV DWORD PTR DS:[46BDDC],247
0043F3A5 MOV EAX,1
0043F3AA JMP 0043F3B1
0043F3AC MOV EAX,0
0043F3B1 POP EDI
По адресу (0043F1D4) регистр EAX обнуляется и на выход из процедуры, а далее
мы знаем что появляется.
Изменим безусловный переход по адресу 0043F1D9:
JMP 0043F3B1
на:
JMP 0043F373
Для изменения ставим курсор по нужному адресу и жмём пробел, в появившемся
окне пишем JMP 0043F373, далее кнопка Assemble.
оригинал:
0043F1D9 E9 D3010000 JMP 0043F3B1
наш патч:
0043F1D9 E9 95010000 JMP 0043F373
Итак, чтобы защита программы рухнула нам нужно всего лишь изменить один
байт. Т.е. по адресу 0043F1DA прописать 95.
Это делается с помощью команды MOV.
MOV BYTE PTR DS:[0043F1DA],95 (код для Инлайн патча)
Инлайн:
Теперь нам нужно исследовать сам упаковщик, и найти такое место в его коде, где программа распакована в памяти, но упаковщик ещё выполняет свой код.
Ставим бряк (hr esp-4) далее F9.
0057339A MOV EAX,1219 (в этом месте сделаем прыжок на наш код)
0057339F PUSH EAX
005733A0 ADD EAX,DWORD PTR SS:[EBP+422]
005733A6 POP ECX
005733A7 OR ECX,ECX
005733A9 MOV DWORD PTR SS:[EBP+3A8],EAX
005733AF POPAD
005733B0 JNZ 005733BA (мы тут)
Итак, нам нужно прописать JMP в свободное место программы (где куча нулей)
выполнить код, который мы затрём прыжком, выполнить наш код, и вернутся на место.
Покрутим мышкой ассемблерный листинг Оли вниз:
005735D0 0000 ADD BYTE PTR DS:[EAX],AL
005735D2 0000 ADD BYTE PTR DS:[EAX],AL
запомним этот адрес 005735D0 и вернёмся обратно на 0057339A
Данное место нам подходит, пишем:
CALL 005735D0, можно написать JMP 005735D0, но после выполнения нашего кода
придется прописывать адрес возврата.
У меня так:
0057339A CALL 005735D0
Для сохранения первого изменения ставим курсор на 0057339A далее F10->Copy to executable->Selection.
Появится небольшое окошко с кодом его не закрывать! Просто
сверните его.
Теперь крутимся на наше свободное место (005735D0) для написания своего кода.
Пишем:
MOV EAX,1219 (так как мы её затерли, написав CALL 005735D0)
MOV BYTE PTR DS:[0043F1DA],95 (это наш код Инлайн патча)
RETN (возвращаемся на место)
Получилось:
005735D0 MOV EAX,1219
005735D5 MOV BYTE PTR DS:[43F1DA],95
005735DC RETN
Теперь выделяем курсором эти три строчки и опять F10->Copy to executable->Selection
В появившемся окошке жмём F10->SaveFile и сохраняем с именем wintools1.exe
Проверяем, всё ли получилось, запуская wintools1.exe.
Окно с напоминанием пропало, программа взломана без распаковки и изменения размера!
Хочу уточнить, что программа взломана полностью, т.е. мы убрали не только окно с
напоминанием о регистрации, но и триал период, и все ограничения в программе.
А значит покупать или искать серийник для неё не нужно, у нас и так теперь есть
полнофункциональная версия программы.
Благодарности:
Хочется сказать спасибо авторам за столь увлекательный материал для исследования.
Ну и спасибо всем кто разместит в Интернете эту статью.
Ссылки:
Форум нашей команды:

http://ahteam.org/forum/

Программы и русификаторы:

http://samlab.ws/

Моя страничка:

http://www.bokiv.astalavista.ms/

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

Скорость печати
Набирайте отображаемый текст и вы узнаете вашу скорость набора текста


Рейтинг@Mail.ru


Copyright © 2024 Как разблокировать аккаунт. Все права защищены.