Крис Касперски - Образ мышления – дизассемблер IDA Pro. Том I
Название: | Образ мышления – дизассемблер IDA Pro. Том I | |
Автор: | Крис Касперски | |
Жанр: | Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Крэкинг и реверсинжиниринг, Assembler | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Образ мышления – дизассемблер IDA Pro. Том I"
Подробный справочник по функциям встроенного языка, интерфейсу и архитектуре дизассемблера IDA Pro 4.01 с уточнением особенностей младших версий.
Показывает приемы эффективного использования IDA Pro для исследования зашифрованного кода, π-кода, самомодифицирующегося кода и кода, защищенного антиотладочными приемами.
Ориентирован на системных программистов средней и высокой квалификации в совершенстве владеющих языком ассемблера микропроцессоров серии Intel 80x86 и работающих с операционными системами фирмы Microsoft.
Читаем онлайн "Образ мышления – дизассемблер IDA Pro. Том I". [Страница - 3]
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (109) »
Например, путь в исходной программе имелся фрагмент (а), загружающий в регистр AX смещение начала таблицы, а в регистр BX индекс требуемого элемента. Ассемблер, заменяя оба значения константами (b), создает неразрешимую задачу, – легко видеть, что один из регистров содержит смещение, а другой индекс, но как узнать какой именно?
MOV AX,offset Table BB 00 02 MOV AX,0010
MOV BX,200h ; Index 01 D8 MOV BX,0200
ADD AX,BX 8B 07 ADD AX,BX
MOV AX,[BX] B8 10 00 MOV AX,Word ptr [BX]
(а) Исходная программа (b) Машинный код (c) Дизассемблированный текст
Другая фундаментальная проблема заключается в невозможности определения границ инструкций синтаксическим дизассемблером. Путь в исходной программе (a) имелась директива выравнивания кода по адресам кратным четырем, тогда ассемблер (b) вставит в этом месте несколько произвольных символов (как правило нулей), а дизассемблер «не зная» об этом, примет их за часть инструкций, в результате чего сгенерирует ни на что ни годный листинг (c).
JMP Label 00: E90100
Align 4 03: 00
Label: XOR AX,AX 04: 33 C0
RET 06: C3
(а) Исходная программа (b) Машинный код
00: E9 01 00 jmp 04
03: 00 33 add [bp][di],dh
05: C0 C3 rol bl,-070;
(c) Дизассемблированный текст
Контекстные дизассемблеры частично позволяют этого избежать, поскольку, способны распознавать типовые способы передачи управления, но если программист использует регистровые переходы, дизассемблеру придется эмулировать выполнение программы, для определения значений регистров в каждой точке программы. Это не только технически сложная, но и ресурсоемкая задача, решение которой еще предстоит найти.
Дизассемблирование – творческий процесс, развивающий интуицию и абстрактное мышление, возможно, даже особый вид искусства, позволяющего каждому проявить свою индивидуальность. На сегодняшний день не существует ни одного полностью автоматического дизассемблера, способного генерировать безупречно работоспособный листинг и доводить полученный ими результат до готовности приходится человеку. Таким образом, встает вопрос о механизмах взаимодействия человека с дизассемблером.
По типу реализации интерфейса взаимодействия с пользователем, существующие дизассемблеры можно разделить на две категории – автономные и интерактивные. Автономные дизассемблеры требуют от пользования задания всех указаний до начала дизассемблирования и не позволяют вмешиваться непосредственно в сам процесс. Если же конечный результат окажется неудовлетворительным, пользователь либо вручную правит полученный листинг, либо указывает дизассемблеру на его ошибки и повторяет всю процедуру вновь и вновь, порой десятки раз! Такой способ общения человека с дизассемблером непроизводителен и неудобен, но его легче запрограммировать.
Интерактивные дизассемблеры обладают развитым пользовательским интерфейсом, благодаря которому приобретают значительную гибкость, позволяя человеку «вручную» управлять разбором программы, помогая автоматическому анализатору там, где ему самому не справится – отличать адреса от констант, определять границы инструкций и т.д.
Примером автономного дизассемблера является SOURCER, а интерактивного – IDA. Преимущество SOURCER-а заключается в простоте управления, в то время как работа с IDA требует высокой квалификации и навыков системного программирования. Неопытные пользователи часто предпочитают SOURCER, лидирующий среди других дизассемблеров, на небольших проектах. Но он очень плохо справляется с анализом большого, порядка нескольких мегабайт, заковыристого файла, а с шифрованным или π‑кодом не справляется вообще! И тогда на помощь приходит IDA, которая, будучи виртуальной программируемой машиной, может абсолютно все – стоит лишь разработать и ввести соответствующий скрипт. А как это сделать и рассказывает настоящая книга.
Первые шаги с IDA Pro
С легкой руки Дениса Ричи повелось начинать освоение нового языка программирования с создания простейшей программы “Hello, World!”, -- и здесь не будет нарушена эта традиция. Оценим возможности IDA Pro следующим примером (для совместимости с книгой рекомендуется откомпилировать его с помощью Microsoft Visual C++ 6.0 вызовом “cl.exe first.cpp” в командной --">
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (109) »
Книги схожие с «Образ мышления – дизассемблер IDA Pro. Том I» по жанру, серии, автору или названию:
Крис Касперски - Компьютерные вирусы изнутри и снаружи Жанр: Компьютерная безопасность Год издания: 2006 |
Елена Геннадьевна Васнецова - Полная энциклопедия домашнего хозяйства Жанр: Современные российские издания Год издания: 2012 |
Тим Вейнер - ФБР. Правдивая история Жанр: Спецслужбы Год издания: 2014 |
Другие книги автора «Крис Касперски»:
Крис Касперски - Записки исследователя компьютерных вирусов Жанр: Компьютерная безопасность Год издания: 2005 |