我正在寻找应具有以下功能的 Java x86 反汇编程序库:
- 反汇编 X86 代码
- 用 Java 类和对象描述 X86 命令
- 命令类应该接受具有通用返回值的访问者
所以,如果我有一些代码可以像这样反汇编:
MOV EAX, EBX
CALL 1234
JMP 88
然后库应该为 MOV、CALL 和 JMP 创建三个对象。然后我实现了一个可以做不同事情的访问者(例如:解释、转换为 x64 或另一种处理器架构的指令)。
提前致谢。
最佳答案
嗯,不完全是。但是有 Java
绑定(bind),例如Capstone
.
这是 maven
bindings . Here您可以下载 native 库。 Here是 Java 代码示例。
// Test.java
import capstone.Capstone;
public class Test {
public static byte [] CODE = { 0x55, 0x48, (byte) 0x8b, 0x05, (byte) 0xb8,
0x13, 0x00, 0x00 };
public static void main(String argv[]) {
Capstone cs = new Capstone(Capstone.CS_ARCH_X86, Capstone.CS_MODE_64);
Capstone.CsInsn[] allInsn = cs.disasm(CODE, 0x1000);
for (int i=0; i<allInsn.length; i++)
System.out.printf("0x%x:\t%s\t%s\n", allInsn[i].address,
allInsn[i].mnemonic, allInsn[i].opStr);
}
}
关于java - 任何面向对象的灵活 Java x86 反汇编程序库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531768/