Любая объектно-ориентированная гибкая библиотека дизассемблера Java x86? - PullRequest
8 голосов
/ 16 декабря 2011

Я ищу библиотеку дизассемблера Java x86, которая должна иметь следующие функции:

  • Разборка кода X86
  • Описание команд X86 с классами Java и объектами
  • Командные классы должны принимать посетителя с общим возвращаемым значением

Итак, если у меня есть какой-нибудь код, который будет разбираться так:

MOV EAX, EBX
CALL 1234
JMP 88

тогда библиотека должна создать три объекта для MOV, CALL и JMP. Затем я реализую посетителя, который делает разные вещи (например, перевод, преобразование в x64 или инструкцию для другой архитектуры процессора).

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 19 августа 2018

Ну, не совсем.Но есть 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);
  }
}
1 голос
/ 19 декабря 2011

Я не знаю ни о какой подобной библиотеке, реализованной полностью на Java. Хотя я слышал про дизассемблер distorm . Он разработан на языке C. Но для этой библиотеки доступны Java-обертки. Посмотри на это. Это может быть полезно для вас.

...