Крис Касперски - Образ мышления – дизассемблер 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]
- 1
- 2
- 3
- 4
- . . .
- последняя (109) »
Покупка 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
Кратное введение в дизассемблирование
Одним из способов изучения программ в отсутствии исходных текстов является дизассемблирование, – перевод двоичных кодов процессора в удобочитаемые мнемонические инструкции. С перового взгляда кажется: ничего сложного в такой операции нет, и один дизассемблер не будет сильно хуже любого другого. На самом же деле, ассемблирование – однонаправленный процесс с потерями, поэтому автоматическое восстановление исходного текста невозможно.
Одна из фундаментальных проблем дизассемблирования заключается в синтаксической неотличимости констант от адресов памяти (сегментов и смещений). Потребность распознавания смещений объясняется необходимостью замены конкретных адресов на метки, действительное смещение которых определяется на этапе ассемблирования программы.
Сказанное можно проиллюстрировать следующим примером: рассмотрим исходную программу (a). При ассемблировании смещение строки s0, загружаемое в регистр s0 заменяется его конкретным значением, в данном случае равным 108h, отчего, команда “MOV DX, offset s0” приобретает вид “MOV DX, 108h”. Это влечет за собой потерю информации – теперь уже нельзя однозначно утверждать как выглядел исходный текст, т.к. ассемблирование “…offset s0” и “…108h” дает одинаковый результат, т.е. функция ассемблирования не инъективна1.
Если все машинные инструкции исходного файла, перевести в соответствующие им символьные мнемоники (назовем такую операцию простым синтаксическим дизассемблированием), в результате получится (b). Легко видеть – программа сохраняет работоспособность лишь до тех пор, пока выводимая строка располагается по адресу 108h. Если модификация кода программы (c) нарушает такое равновесие, на экране вместо ожидаемого приветствия появляется мусор – теперь выводимая строка находится по адресу 0x10C, но в регистр DX по прежнему загружается прежнее значение ее смещения – 0x108 (d).
mov ah,9 mov ah,9 mov ah,09
mov dx, offset s0 mov dx,0108h mov dx,0108h
int 21h int 21h int 21h
ret ret xor ax,ax
s0 DB 'Hello,World!',0Dh,0Ah,'$' s0 DB 'Hello,World!',0Dh,0Ah,'$' int 16h
ret
s0 DB 'Hello,World!',0Dh,0Ah,'$'
(а) Исходная программа (b) Дизассемблированная программа (с) Модифицированная программа
:0100 start proc near
:0100 mov ah, 9
:0102 mov dx, 108h ─┐
:0105 int 21h │
:0107 xor ax, ax │
:0109 int 16h ◄────┘
:010B retn
:010B aHelloWorld db 'Hello,World!',0Dh,0Ah,'$'
:010C end start
(d) Неработоспособный результат
Аналогичная проблема возникает и переводе с одного языка на другой – фраза «это ключ» в зависимости от ситуации может быть переведена и как “this is key”, и “this is clue”, и “this is switch”… Для правильного перевода мало простого словаря - подстрочечника, необходимо еще понимать о чем идет речь, т.е. осмысливать переводимый текст.
Человек легко может определить, что содержимое регистра DX в данном случае является именно смещением, а не чем ни будь иным, поскольку, его ожидает функция 0x9 прерывания 0x21. Но дизассемблеру для успешной работы мало знать одних прототипов системных и библиотечных функций, – он должен еще уметь отслеживать содержимое регистров, а, следовательно, «понимать» команды микропроцессора. Создание такого --">
- 1
- 2
- 3
- 4
- . . .
- последняя (109) »
Книги схожие с «Образ мышления – дизассемблер IDA Pro. Том I» по жанру, серии, автору или названию:
Шарль де Голль - Военные мемуары. Том I. Призыв, 1940–1942 Жанр: Литература ХX века (эпоха Социальных революций) Год издания: 2003 Серия: Военно-историческая библиотека |
Луи-Адольф Тьер - История Французской революции. Том 2 Жанр: Современные российские издания Год издания: 2016 |
Другие книги автора «Крис Касперски»:
Крис Касперски, Ева Рокко - Искусство дизассемблирования Жанр: Крэкинг и реверсинжиниринг Год издания: 2008 |