Библиотека knigago >> Учебники и пособия >> Статьи и рефераты >> Техника отладки приложений без исходных кодов (Статья о SoftICE)


"Дочь человечья, или Это я, Ольга" Алексея Корепанова - это захватывающий роман, который погружает читателя в дебри человеческой психики и исследует сложные темы памяти, травмы и самопознания. Главная героиня, Ольга, борется с потерей памяти после несчастного случая. По мере того, как она пытается собрать воедино осколки своего прошлого, она сталкивается с жуткими воспоминаниями и темными секретами. Корепанов мастерски сплетает прошлое и настоящее Ольги, создавая захватывающую и...

Крис Касперски - Техника отладки приложений без исходных кодов (Статья о SoftICE)

Техника отладки приложений без исходных кодов (Статья о SoftICE)
Книга - Техника отладки приложений без исходных кодов (Статья о SoftICE).  Крис Касперски  - прочитать полностью в библиотеке КнигаГо
Название:
Техника отладки приложений без исходных кодов (Статья о SoftICE)
Крис Касперски

Жанр:

Статьи и рефераты, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Windows, Крэкинг и реверсинжиниринг, Отладка, тестирование и оптимизация ПО

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Техника отладки приложений без исходных кодов (Статья о SoftICE)"

Практически все знают, что программы взламываются отладчиком, но не все знают, как. На самом деле ничего сложного в этом нет. Достаточно выучить несколько простых приемов и уже можно начинать ломать.

Читаем онлайн "Техника отладки приложений без исходных кодов (Статья о SoftICE)". [Страница - 5]

77E13EB0      USER32!ShowCursor+0057

0012E2BC 77E16469      USER32!SetTimer+0435

0012E2E0 77E164E5      USER32!SetRect+0065

0012E300 00F7A1B6      USER32!CallWindowProcW+0019

0012E320 00F7A403      oorwiz!.text+000191B6

0012E33C 00F7BC02      oorwiz!.text+00019403  ; _AfxPostInitDialog

0012E39C 00F7BC92      oorwiz!.text+0001AC02  ; AfxWndProc

0012E3BC 77E13EB0      oorwiz!.text+0001AC92  ;

0012E3DC 77E1591B      USER32!SetTimer+0435

Листинг 2. Раскрутка стека в soft-ice.


Десять первых вызовов относятся к библиотеке USER32.DLL и не представляют для нас никакого интереса (soft-ice неправильно определил принадлежность вызова 12E138h, приписав его к oorwiz, но oorwiz не может располагаться по адресам 77E155B5 — эта зона принадлежит USER32). А вот одиннадцатый вызов 12E320, ведущий к адресу F7A403 весьма интересен. Заглянув сюда дизассемблером, мы обнаружим следующий код:


.text:1001A3E6                call dword ptr [eax+10Ch]

.text:1001A3EC                test eax, eax

.text:1001A3EE                jnz  short loc_1001A406

.text:1001A3F0                push [ebp+arg_8]

.text:1001A3F3                mov  eax, [esi]

.text:1001A3F5                push [ebp+arg_4]

.text:1001A3F8                mov  ecx, esi

.text:1001A3FA                push [ebp+arg_0]

.text:1001A3FD                call dword ptr [eax+110h]

.text:1001A403                mov  [ebp+var_4], eax   ; адрес возврата

.text:1001A406

.text:1001A406 loc_1001A406:         ; CODE XREF: CWnd::WindowProc()+24^j

.text:1001A406                mov  eax, [ebp+var_4]

.text:1001A409                pop  esi

.text:1001A40A        leave

.text:1001A40B                retn 0Ch

Листинг 3. Фрагмент дизассемблерного листинга, с подозрительным условным переходом.


Функция 1001A3FD: call dword ptr [eax+110h] — та самая, к которой ведет адрес возврата. Именно она и выводит противный регистрационный диалог. Прокручивая экран дизассемблера вверх, легко найти условный переход, расположенный по адресу 101AEE, который прыгает за диалог возврата. Изменив jnz на jmp short, мы навсегда уберем диалог с экрана. Конечно, такая мера еще не зарегистрирует программу, но это все-таки кое-что!

Отладка динамических библиотек

Loader32 (символьный загрузчик soft-ice) как бы позволяет загружать динамические библиотеки, но отлаживать их в автономном режиме не позволяет, что, собственно говоря, и не удивительно, ведь всякая такая библиотека — просто набор функций, вызываемых из основного процесса. Возьмем библиотеку oorwiz.dll, экспортирующую тройку функций с заманчивыми именами: RegWiz_InitReadOnly, RegWiz_InitTrial, RegWiz_InitLicMgr. Как их отладить?

Заходим в Loader32, выбираем пункт File ―> Load Export, указываем имя библиотеки (oorwiz.dll). В списке «Loader Symbols» немедленно появляется новое имя. Теперь загружаем основной исполняемый файл (в данном случае oodled.exe) и устанавливаем точки останова на интересующие нас функции («bpx RegWiz_InitReadOnly», «bpx RegWiz_InitTrial», «bpx RegWiz_InitLicMgr»), заставляя отладчик всплывать при их вызове.


Книгаго: Техника отладки приложений без исходных кодов (Статья о SoftICE). Иллюстрация № 6

Рисунок 6. Загрузка экспорта из динамических библиотек.

Поскольку динамические библиотеки перемещаемы, адреса в дизассемблере могут не совпадать с отладчиком. Вот, например, в oorwiz.dll IDA определяет адрес функции RegWiz_InitTrial как 10001D00h, а soft-ice как F60000. Ну, и как с этим жить? А вот как: базовый адрес загрузки (Imagebase) равен 10000000h, в чем IDA честно признается в начале файла. Но загрузить по этому адресу библиотеку не получается и операционная система перемещает ее по адресу xxxx, о чем говорит команда «MOD» в soft-ice:

:mod

hMod     Base       Module Name   File Name

80400000 804000C8   ntoskrnl      \WINNT\System32\ntoskrnl.exe

00400000 00400108   oodled        \Program Files\OO Software\DriveLED2\ood

00F30000 00F300B8   oodlrwrs      \Program Files\OO Software\DriveLED2\ood

00F60000 00F600F8   oorwiz        \Program Files\OO Software\DriveLED2\oor

10000000 100000C0   oodledrs      \Program Files\OO Software\DriveLED2\ood

Листинг 4. Просмотр базовых адресов загрузки командой MOD.


Разница базовых адресов составляет 10001000 - F60000 = F0A1000, поэтому чтобы перевести адрес из отладчика в дизассемблер к нему необходимо добавить F0A1000, а из дизассемблера в отладчик — отнять.

Заключение

Рассмотренные приемы работают далеко не везде и не всегда. Разработчики далеко не идиоты и он взлома они все-таки защищаются. Лучше начинать с простых защит, постепенно переходя все к более сложным. Отладчик — это сложный инструмент, который не осваивается за день. Исследование машинных кодов — настоящее искусство, которому учатся всю жизнь. Так что, не нужно огорчаться, --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.