java - 任何面向对象的灵活 Java x86 反汇编程序库?

标签 java x86 visitor-pattern disassembly

我正在寻找应具有以下功能的 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/

相关文章:

java - fragment UI 元素为空

javascript - 新版本的谷歌地图javascript版本是否适用于JavaFx-WebView

JavaFX 强制 GridPane 中的所有单元格具有相同的大小

assembly - 有没有办法在 x86 上使用 MMX/SSE 减去压缩的无符号双字,饱和?

gcc - 为什么 GCC 在分配一个没有后续函数调用的大数组时将错误的值减去堆栈指针?

java - 当选中复选框时,JCheckBox 周围的 EmptyBorder 变得可见

gcc - GCC何时插入异或eax,eax?

c++ - 优化 std::visit 可能吗?

php - 动态页面的访客计数器

java - 将访问者模式与 JavaCC 和 JJtree 结合使用