Литвек - электронная библиотека >> Крис Касперски >> Статьи и рефераты и др. >> Техника отладки приложений без исходных кодов (Статья о SoftICE) >> страница 4
№ 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, а из дизассемблера в отладчик — отнять.

Заключение

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