我正在寻找一个应该具有以下功能的Java x86反汇编程序库:
所以,如果我有一些像这样反汇编的代码:
MOV EAX, EBX
CALL 1234
JMP 88
然后库应该为MOV,CALL和JMP创建三个对象。然后我实现了一个执行各种操作的访问者(例如:解释,转换为x64或指向另一个处理器体系结构的指令)。
提前致谢。
答案 0 :(得分:1)
我不知道任何这样的库完全是用Java实现的。虽然,我确实听说过distorm反汇编程序。它是用C开发的。但Java包装器可用于此库。看看它。它可能对你有用。
答案 1 :(得分:1)
嗯,不完全是。但是有Java
个绑定,例如Capstone
。
这里是maven
bindings。 Here可以下载本机库。 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);
}
}