Студопедия — Дизассемблер IDA PRO.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Дизассемблер IDA PRO.






G Прыжок по адресу
C Преобразовать в код
D Преобразовать в данные
A Преобразовать в текст
U Отменить любое преобразование
N Переименовать метку
O Операнд - смещение
* Задать массив
; Задать комментарий к строке
ENTER Прыжок на метку под курсором
ESC Возврат на один шаг назад по прыжкам
CTRL+E Прыжок на точку входа в программу
CTRL+X Показать ссылки на данную строку
CTRL+P Прыжок на метку по имени
CTRL+U Прыжок на начало функции

Одним из самых распространенных способов защиты от дизассемблирования является шифровка участков кода программы. Одним из самых простых методов является статическая шифровка, которая часто встречается в конвертных защитах. Суть в следующем. Создается шифрующая программа, которая перед сборкой загрузочного файла шифрует часть программы. В загрузочных файл добавляется фрагмент, который с фиксированных адресов расшифровывает зашифрованный фрагмент. В результате во время работы программы необходимые действия программой выполняются, но во время изучения дизассемблером мы видим другой код. Такие программы также называют самомодифицирующимися. Для изучения такой программы можно использовать отладчик, но при этом трудно получить листинг программы. Другой выход - использовать дизассемблер IDA, в котором с помощью встроенных скриптов можно расшифровать зашифрованный участок.

crypt.com - статическая шифровка, часто использующаяся в "конвертных защитах".

Далее приведены исходные коды для компонент защиты, все они компилируются в COM программы и для экономии места первые три и последняя строки опущены

Первая программа Lab21.asm является как бы префиксом защищаемой программы, в ее задачи входит расшифровка в памяти защищаемой программы.

start: ;
mov si,offset _end ;в SI смещение метки _end, ее адрес
lodsw ;в AX слово по адресу DS:SI, SI=SI+2
xchg ax,cx ;помещаем в CX значение AX
push si ;сохраняем в стек значение SI
decrypt: ;метка decrypt
xor byte ptr [si],0AAh ;сложение по модулю 2
inc si ;увеличиваем SI на 1
loop decrypt ;цикл с метки decrypt CX раз
jmp si ;прыгаем по адресу SI, в lab23
_end: ;метка _end
filesize dw 0 ;размер шифруемого файла

Программа Lab22.asm – защищаемая программа, вместо нее может быть подставлена любая другая

start:  
mov ah,9  
mov dx,offset text  
int 21h  
ret  
text db Hello',0dh,0ah,'$'  
_end:  

Программа Lab23.asm это заключительная часть защиты, в ее функции входит копирование расшифрованной программы в начало сегмента и передача ей управления

start:  
call _next  
_next:  
pop cx  
pop si  
mov di,offset start  
push di  
sub cx,si  
rep movsb  
ret  

Lab24.asm – это программа, которая выполняет сборку в памяти всех фрагментов, шифрование защищаемой программы и запись всего этого обратно в файл.

start:  
mov ax,3d02h  
mov dx,offset file1  
int 21h  
xchg ax,bx  
mov ah,3Fh  
mov cx,100h  
mov dx,pointer  
int 21h  
add pointer,ax  
mov ax,3d02h  
mov dx,offset filename  
int 21h  
xchg ax,bx  
push bx  
mov ah,3Fh  
mov cx,1000h  
mov dx,pointer  
int 21h  
mov di,pointer  
mov [di-2],ax  
add pointer,ax  
xchg ax,cx  
mov si,dx  
crypt:  
xor byte ptr [si],0AAh  
inc si  
loop crypt  
mov ax,3d02h  
mov dx,offset file2  
int 21h  
xchg ax,bx  
mov ah,3Fh  
mov cx,100h  
mov dx,pointer  
int 21h  
add pointer,ax  
mov ax,4200h  
pop bx  
xor cx,cx  
xor dx,dx  
int 21h  
mov ah,40h  
mov dx,offset buffer  
mov cx,pointer  
sub cx,dx  
int 21h  
ret  
filename db 'lab22.com',0  
file1 db 'lab21.com',0  
file2 db 'lab23.com',0  
pointer dw offset buffer  
buffer:  

После компиляции данных программ четвертая производит операции по сборке непосредственно самой защиты.

Расшифровывается 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);







Дата добавления: 2015-10-19; просмотров: 794. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Почему важны муниципальные выборы? Туристическая фирма оставляет за собой право, в случае причин непреодолимого характера, вносить некоторые изменения в программу тура без уменьшения общего объема и качества услуг, в том числе предоставлять замену отеля на равнозначный...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия