Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
A Penultimate, Partial ListingДата добавления: 2015-10-19; просмотров: 452
Одним из самых распространенных способов защиты от дизассемблирования является шифровка участков кода программы. Одним из самых простых методов является статическая шифровка, которая часто встречается в конвертных защитах. Суть в следующем. Создается шифрующая программа, которая перед сборкой загрузочного файла шифрует часть программы. В загрузочных файл добавляется фрагмент, который с фиксированных адресов расшифровывает зашифрованный фрагмент. В результате во время работы программы необходимые действия программой выполняются, но во время изучения дизассемблером мы видим другой код. Такие программы также называют самомодифицирующимися. Для изучения такой программы можно использовать отладчик, но при этом трудно получить листинг программы. Другой выход - использовать дизассемблер IDA, в котором с помощью встроенных скриптов можно расшифровать зашифрованный участок. crypt.com - статическая шифровка, часто использующаяся в "конвертных защитах". Далее приведены исходные коды для компонент защиты, все они компилируются в COM программы и для экономии места первые три и последняя строки опущены Первая программа Lab21.asm является как бы префиксом защищаемой программы, в ее задачи входит расшифровка в памяти защищаемой программы.
Программа Lab22.asm – защищаемая программа, вместо нее может быть подставлена любая другая
Программа Lab23.asm это заключительная часть защиты, в ее функции входит копирование расшифрованной программы в начало сегмента и передача ей управления
Lab24.asm – это программа, которая выполняет сборку в памяти всех фрагментов, шифрование защищаемой программы и запись всего этого обратно в файл.
После компиляции данных программ четвертая производит операции по сборке непосредственно самой защиты. Расшифровывается 3-мя строками в IDA: используется 2 функции (одна чтение, другая записи). 1. A = Byte ([0x1000],[0x100]) – в ‘A’ записывается байт из сегмента 1000 и смещения 100h. 2. PatchByte ([0x1000, 0x100], 0x27) - запись в байт по адресу 1000: 100h значение 27h Cкрипт расшифровывающий ключом 75h со смещения 100h до 120h: auto a; for (a = 0x100; a<0x120; a + +) PatchByte ([0x1000, a], Byte([0x1000, a])^0x75);
|