在特定地址的程序中反汇编x86代码

时间:2011-01-22 17:50:38

标签: c++ c assembly disassembly

是否有任何x86反汇编程序框架可用于分析程序中特定地址的代码,如:

info = disassemble(  startAddress , stopAddress)  

它应该显示每个指令及其操作数和任何其他有利于分析的信息,但它也应该具有快速模式,其中获取每条指令的那么多信息并不是那么重要,但仅针对其中一些可以指定。

5 个答案:

答案 0 :(得分:4)

GNU binutils不够好吗?以下是使用objdump实用程序的方法:

# Disassemble from virtual addresses 0x80000000 to 80000100
objdump -d program --start-address=0x80000000 --stop-address=0x80000100

答案 1 :(得分:0)

Google的protobuf使用libdisasm来解决这个问题。令人遗憾的是(从源代码判断)它只支持ia32和x86以及主页声明“它是x86特定的,不会扩展为包含其他CPU架构”。但由于你没有提到其他的拱门,这个图书馆可能就足够了。

答案 2 :(得分:0)

尝试BeaEngine

答案 3 :(得分:0)

跨平台的InstructionAPI适合此目的,它将分析代码并打印出反汇编或提供与机器无关的指令视图供您查询。 InstructionAPI是一个共享库,您可以将代码链接到该库。

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

答案 4 :(得分:0)

我会调试到起点并查看调试器的反汇编输出。更残酷的方法是将其全部反汇编并在反汇编文件中搜索函数名称。 objconv可以做到这一点,但是对于非常大的文件来说速度很慢。