Отладочная программа под DOS для 32-битной сборки x86 - PullRequest
6 голосов
/ 08 июля 2010

Многие из вас могут вспомнить старую программу DOS - отладку. Хотя во многих отношениях она была устаревшей, одним из приятных моментов было то, что можно легко найти последовательность байтов для данной инструкции без необходимости выполнять шаги по написанию программы, компиляции, дизассемблированию, проверке содержимого файла, .. Введите инструкцию, затем сбросьте адрес инструкции. К сожалению, debug не выполняет 32-битные инструкции.

Кто-нибудь знает инструмент, который делает нечто подобное для 32-битных инструкций x86? Я не хочу проходить весь процесс компиляции; Мне просто нужно иметь возможность ввести пару инструкций, чтобы они вывели длину инструкции и последовательность ее байтов.

Ответы [ 2 ]

4 голосов
/ 10 июля 2010

DOS debug был интерактивным ассемблером, а также отладчиком, ввод кода сборки приводил к тому, что эта строка немедленно конвертировалась в машинный код - то, что вы выгрузили.

Итак, все, что вам нужно,автоматизируйте ваш любимый ассемблер с помощью скрипта или пакетного файла.

Вот функция bash, которую я придумал через минуту или две, используя популярный ассемблер nasm :

opcode() {
  echo $* > tmp.S && nasm tmp.S -o tmp.o && od -x tmp.o
  rm -f tmp.o tmp.S
}

Занимает меньше секунды.Вызов выглядит так:

$ opcode mov eax, [ebx]
0000000 6667 038b
0000004
$ opcode fadd st0,st1
0000000 c1d8
0000002

Не блестяще, но вы можете настроить командную строку od для лучшего вывода.Эта идея должна работать с любым ассемблером командной строки, если вы указали использовать простой двоичный формат вывода.

1 голос
/ 08 июля 2010

Есть несколько простых 32-битных отладчиков командной строки.Исходя из вашего описания, OllyDbg может соответствовать вашим потребностямПо крайней мере, некоторые версии Microsoft Средства отладки для Windows включают в себя один с именем CDB, который обозначает Commandline DeBugger (хотя я не проверял, что связанная версия включает его ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...