Архитектура x86-64 под скальпелем ассемблерщика


Архитектура x86-64 под скальпелем ассемблерщика

Архитектура x86-64 под скальпелем ассемблерщика
Введение
разрядный лейбл, для разнообразия на китайском
Что нам понадобиться?
реакция 64-битного Линуха
Листинг1 сборка BOCHS'а с поддержкой эмуляции x86-64
Листинг2 сборка BOCHS'а для компиляции Microsoft Visual C++
специальная сборка BOCHS'а
загрузка 64-разрядного Дебиана под эмулятором QEMU

битная версия Windows в стадии начальной загрузки


Обзор x86-64
регистры, доступные в x86-64 режиме
Листинг3 загрузка опкода следующей машинной команды в классическом x86
Листинг4 загрузка опкода следующей машинной команды на x86-64
Листинг5 абсолютная адресация в классическом x86
Листинг6 использование фиктивного базирования на x86-64 для абсолютной адресации
Врезка переход в 64-разрдяный режим
Hello world на x86-64
Листинг 8 пример вызова API-функции с пятью параметрами по соглашению x86-64

Листинг9 простейшая 64-битная программа
Листинг10 дизассемблерный листинг простейшей 64-битной программы
битный файл — первый полет
реакция 32-битной Windows на попытку запуска 64-битного PE-файла
Листинг12 дизассемблерный листинг 64-битного приложения "hello, world!"
дизассемблирование 64-битного PE-файла 32-битной версий IDA Pro
Листинг13 дизассемблерный листинг 32-битного приложения "hello, world!"
Листинг14 64-битное приложение "hello, world" под Windows на MASM'е
Заключение