有没有面向对象的灵活 Java x86 反汇编器库?

发布于 2024-12-21 15:43:41 字数 321 浏览 1 评论 0原文

我正在寻找一个 Java x86 反汇编器库,它应该具有以下功能:

  • 反汇编 X86 代码
  • 用 Ja​​va 类和对象描述 X86
  • 命令 命令类应该接受具有通用返回值的访问者

因此,如果我有一些可以反汇编的代码this:

MOV EAX, EBX
CALL 1234
JMP 88

那么库应该为 MOV、CALL 和 JMP 创建三个对象。然后,我实现一个执行不同操作的访问者(例如:解释、转换为 x64 或转换为另一个处理器架构的指令)。

提前致谢。

I am looking for a Java x86 disassembler library that should have following features:

  • Disassembling X86 Code
  • Describing X86 commands with Java classes and Objects
  • The command classes should accept a visitor which has a generic return value

So, if I have some code that would disassemble like this:

MOV EAX, EBX
CALL 1234
JMP 88

then the library should create three objects for MOV, CALL and JMP. Then I implement a visitor that does diverse things (ex: interpreting, converting to x64 or to an instruction for another processor architecture).

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

客…行舟 2024-12-28 15:43:41

嗯,不完全是。但是有 Java 绑定,例如 Capstone

以下是 maven 绑定在这里您可以下载本机库。 这里是一个 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);
  }
}

Well, not quite. But there are Java bindings for e.g. Capstone.

Here are maven bindings. Here you can download the native libraries. Here is a Java code example.

// 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);
  }
}
那小子欠揍 2024-12-28 15:43:41

我不知道有任何这样的库完全由 Java 实现。尽管如此,我确实听说过 distorm 反汇编程序。它是用 C 语言开发的。但是 Java 包装器可用于该库。看看吧。它可能对你有用。

I don't know about any such library implemented entirely Java. Although, I do heard about distorm disassembler. It is developed in C. But Java wrappers are available for this library. Have a look at it. It may be useful for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文