Библиотека knigago >> Компьютеры: Разработка ПО >> Крэкинг и реверсинжиниринг >> Образ мышления – дизассемблер IDA Pro. Том I


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1648, книга: Джентльмены
автор: Клас Эстергрен

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

СЛУЧАЙНАЯ КНИГА

Кросс с препятствиями. Сато Цутому
- Кросс с препятствиями

Жанр: Фэнтези: прочее

Серия: Непутевый ученик в школе магии

Крис Касперски - Образ мышления – дизассемблер IDA Pro. Том I

Образ мышления – дизассемблер IDA Pro. Том I
Книга - Образ мышления – дизассемблер IDA Pro. Том I.  Крис Касперски  - прочитать полностью в библиотеке КнигаГо
Название:
Образ мышления – дизассемблер IDA Pro. Том I
Крис Касперски

Жанр:

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

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

неизвестно

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

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

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

Рейтинг:

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

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

Краткое содержание книги "Образ мышления – дизассемблер IDA Pro. Том I"

Подробный справочник по функциям встроенного языка, интерфейсу и архитектуре дизассемблера IDA Pro 4.01 с уточнением особенностей младших версий.

Показывает приемы эффективного использования IDA Pro для исследования зашифрованного кода, π-кода, самомодифицирующегося кода и кода, защищенного антиотладочными приемами.

Ориентирован на системных программистов средней и высокой квалификации в совершенстве владеющих языком ассемблера микропроцессоров серии Intel 80x86 и работающих с операционными системами фирмы Microsoft.

Читаем онлайн "Образ мышления – дизассемблер IDA Pro. Том I". [Страница - 2]

с
дизассемблером ограничено.
В каждый пакет поставки (за исключением демонстрационного) входят две
ипостаси – одна графическая под Windows-32 (в дальнейшем обозначаемая как IDAG) и
три консольных для MS-DOS, OS/2 и Windows-32. В демонстрационный пакет входит
лишь одна графическая ипостась. Обе ипостаси обладают сходными функциональными
возможностями, поэтому в книге будет описана лишь одна из них, скомпилированная для
исполнения в среде Windows-32 (в дальнейшем обозначаемая как IDAW)
Покупка IDA Pro Standard или IDA Pro Advanced дает право на бесплатное
приобретение IDA SDK (Software Development Kit) – программного пакета, позволяющего
пользователю самостоятельно разрабатывать процессорные модули, файловые
загрузчики и плагины (внешние самостоятельные модули). Это неограниченно расширяет
возможности IDA Pro, позволяя анализировать любой код, для какого бы микропроцессора
и операционной системы он ни предназначался. SDK различных версий не совместимы
друг с другом и созданные пользователем модули могут не работать в другой версии
IDA Pro, поэтому, прежде чем переходить на очередную версию IDA Pro, настоятельно
рекомендуется убедиться в сохранении работоспособности всех скриптов, модулей и
плагинов и т.д.
Рисунок 1 ”ida.console.view” Так выглядит консольная ипостась IDA Pro 4.01
Рисунок 2 “ida.gui.view” Так выглядит графическая ипостась IDA Pro 4.01
Рисунок 3 “ida.gui.view.4.14.bmp” Так выглядит графическая ипостась IDA Pro 4.14
Demo
2

Кратное введение в дизассемблирование
Одним из способов изучения программ в отсутствии исходных текстов является
дизассемблирование, – перевод двоичных кодов процессора в удобочитаемые
мнемонические инструкции. С перового взгляда кажется: ничего сложного в такой операции
нет, и один дизассемблер не будет сильно хуже любого другого. На самом же деле,
ассемблирование – однонаправленный процесс с потерями, поэтому автоматическое
восстановление исходного текста невозможно.
Одна из фундаментальных проблем дизассемблирования заключается в
синтаксической неотличимости констант от адресов памяти (сегментов и смещений).
Потребность распознавания смещений объясняется необходимостью замены конкретных
адресов на метки, действительное смещение которых определяется на этапе
ассемблирования программы.
Сказанное можно проиллюстрировать следующим примером: рассмотрим
исходную программу (a). При ассемблировании смещение строки s0, загружаемое в
регистр s0 заменяется его конкретным значением, в данном случае равным 108h, отчего,
команда “MOV DX, offset s0” приобретает вид “MOV DX, 108h”. Это влечет за собой потерю
информации – теперь уже нельзя однозначно утверждать как выглядел исходный текст, т.к.
ассемблирование “…offset s0” и “…108h” дает одинаковый результат, т.е. функция
ассемблирования не инъективна 1.
Если все машинные инструкции исходного файла, перевести в соответствующие им
символьные мнемоники (назовем такую операцию простым синтаксическим
дизассемблированием), в результате получится (b). Легко видеть – программа сохраняет
работоспособность лишь до тех пор, пока выводимая строка располагается по адресу
108h. Если модификация кода программы (c) нарушает такое равновесие, на экране
вместо ожидаемого приветствия появляется мусор – теперь выводимая строка находится
по адресу 0x10C, но в регистр DX по прежнему загружается прежнее значение ее
смещения – 0x108 (d).
mov
mov
int
ret
s0

ah,9
dx, offset s0
21h

Æ

DB 'Hello,World!',0Dh,0Ah,'$'

(а) Исходная программа

mov
ah,9
mov
dx,0108h
int
21h
ret
s0 DB 'Hello,World!',0Dh,0Ah,'$'

Æ

(b) Дизассемблированная программа
:0100 start
:0100
:0102
:0105
:0107
:0109
:010B
:010B aHelloWorld
:010C end

mov
ah,09
mov
dx,0108h
int
21h
xor
ax,ax
int
16h
ret
s0 DB 'Hello,World!',0Dh,0Ah,'$'
(с) Модифицированная программа

proc
near
mov
ah, 9
mov
dx, 108h ─┐
int
21h

xor
ax, ax

int
16h ◄────┘
retn
db 'Hello,World!',0Dh,0Ah,'$'
start

(d) Неработоспособный результат

Аналогичная проблема возникает и переводе с одного языка на другой – фраза
«это ключ» в зависимости от ситуации может быть переведена и как “this is key”, и “this is
clue”, и “this is switch”… Для правильного перевода мало простого словаря подстрочечника, необходимо еще понимать о чем идет речь, т.е. осмысливать
переводимый текст.
Человек легко может определить, что содержимое регистра DX в данном случае
1

Функция f(x) = y называется инъективной, если уравнение f(y) = x, имеет только один
корень --">

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


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