Разбирать код x86 в программе по определенному адресу - PullRequest
1 голос
/ 22 января 2011

Существует ли какая-либо среда дизассемблера x86, которую можно использовать для анализа кода с определенного адреса в программе, например:

info = disassemble(  startAddress , stopAddress)  

Он должен показывать каждую инструкцию и ее операнды, а также любую другую информацию, полезную для анализа, но также должен иметь быстрый режим, в котором не так важно получать столько информации для каждой инструкции, но только для некоторых из них, которые можно указать.

Ответы [ 5 ]

4 голосов
/ 22 января 2011

Не достаточно ли GNU binutils ? Вот как это сделать с помощью утилиты objdump:

# Disassemble from virtual addresses 0x80000000 to 80000100
objdump -d program --start-address=0x80000000 --stop-address=0x80000100
0 голосов
/ 26 июля 2011

Я бы отладил до начальной точки и посмотрел бы вывод разборки отладчика. Более жестокий метод - разобрать все это и найти имя функции в файле дизассемблирования. objconv может сделать это, но это очень медленно для очень больших файлов.

0 голосов
/ 13 апреля 2011

Кроссплатформенная InstructionAPI подходит для этой цели, она анализирует код и может распечатать разборку или предоставить машинно-независимое представление инструкций для запроса. InstructionAPI - это общая библиотека, с которой вы бы связали свой код.

http://www.paradyn.org/html/manuals.html

0 голосов
/ 12 апреля 2011

Попробуйте BeaEngine

0 голосов
/ 23 января 2011

Protobuf от Google использует libdisasm в этом отношении.Печально то, что (судя по исходному коду) он поддерживает только ia32 и x86, а домашняя страница сообщает, что «это специфично для x86 и не будет расширяться для включения других архитектур ЦП» .Но поскольку вы не упомянули другие арки, этой библиотеки может быть достаточно.

...