2011-12-16 17 views
8

Busco a una biblioteca desensamblador de Java x 86 que debe tener las características siguientes:Cualquier biblioteca de ensamblador de desensamblador Java x86 flexible orientada a objetos?

  • que desmontan Código X86
  • Al describir los comandos X86 con clases Java y objetos
  • Las clases comando debe aceptar un visitante que tiene una valor de retorno genérica

Así, si tengo algo de código que se desmonte la siguiente manera:

MOV EAX, EBX 
CALL 1234 
JMP 88 

luego la biblioteca debe crear tres objetos para MOV, CALL y JMP. Luego implemento un visitante que hace cosas diversas (por ejemplo: interpretación, conversión a x64 o una instrucción para otra arquitectura de procesador).

Gracias de antemano.

+0

No creo que exista tal desensamblador, porque el ensamblador es de procedimiento. Por lo tanto, no puede convertir de procedimental a Object Oriented sin rediseñar la aplicación y eso debe hacerse a mano. – Zemzela

+0

El objetivo no es convertir el diseño de procedimientos en orientado a objetos. Solo quiero una biblioteca que describa los procedimientos como objetos Java y puedo hacer lo que quiera con ellos. – belgther

+1

Pero, ¿por qué no utiliza un desensamblador x86 normal para desmontar el binario y analizar el resultado con un Java-Programm. Luego puede simplemente leer el código desensamblado en una lista de objetos que representa las instrucciones MOV o CALL; o podría intentar construir una estructura de árbol tratando de identificar los subelementos mediante instrucciones de salto. –

Respuesta

1

No conozco ninguna biblioteca tal implementada completamente en Java. Aunque escuché sobre distorm desensamblador. Está desarrollado en C. Pero los envoltorios de Java están disponibles para esta biblioteca. Échale un vistazo. Puede ser útil para ti

+0

Gracias por insinuar sobre distorm. Pero veo que tiene dos desventajas: primero, no está realmente orientado a objetos y las instrucciones descodificadas no aceptan a un visitante. segundo, contiene los operandos como una cadena, lo que significa que deben volver a analizarse. – belgther

+1

Escribir una abstracción de visitante para algo que le proporcione un soporte detallado debería ser fácil. La parte realmente difícil es "analizar el código de la máquina", y la distorsión parece ser buena en eso. Además, esto no se parece a un análisis sintáctico de cadena: http://code.google.com/p/distorm/source/browse/trunk/examples/java/distorm/src/diStorm3/Operand.java – tucuxi

Cuestiones relacionadas