2011-12-16 26 views
8

Ben şu özelliklere sahip olmalıdır Java x86 disassembler kitaplığı için arıyorum:Nesne Yönelimli Esnek Java x86 Disassembler Kütüphanesi?

  • sökülmesi X86 Kod
  • X86 Java sınıfları ile komutları ve bir olan bir ziyaretçinin kabul etmelidir
  • komut sınıfları Nesneleri nitelendiren jenerik dönüş değeri

Yani, böyle sökmeye olacak bazı kod varsa:

MOV EAX, EBX 
CALL 1234 
JMP 88 

daha sonra kütüphane MOV, CALL ve JMP için üç nesne oluşturmalıdır. Sonra farklı şeyler yapan bir ziyaretçiyi uygularım (örneğin: yorumlama, x64'e dönüştürme veya başka bir işlemci mimarisine yönlendirme).

Şimdiden teşekkürler.

+0

Bunun böyle bir sökücü olduğunu sanmıyorum çünkü montajcı prosedüreldir. Böylece, uygulamayı yeniden tasarlamadan ve işlemin elle yapılması gerekmeden prosedürelden Object Oriented'e dönüşemezsiniz. – Zemzela

+0

Buradaki nokta, prosedürel nesnel yönelimli tasarıma dönüştürme ile ilgili değildir. Prosedürleri Java nesneleri olarak tanımlayan bir kütüphane istiyorum ve onlarla ne istersem yapabilirim. – belgther

+1

Ancak, ikili dosyayı sökmek ve çıktıyı bir Java-Programm ile ayrıştırmak için düzenli bir x86 disassembler kullanmıyorsunuz. Ardından, demonte edilmiş kodu, MOV veya CALL komutlarını temsil eden nesneler listesinde kolayca okuyabilirsiniz; ya da atlama komutlarını kullanarak alt öğeleri tanımlamaya çalışan bir ağaç yapısı oluşturmaya çalışabilirsiniz. –

cevap

1

Tamamen Java uygulanan böyle bir kitaplık hakkında bilmiyorum. Bununla birlikte, distorm disassembler hakkında duydum. C dilinde geliştirilmiştir. Ancak Java kütüphaneleri bu kütüphane için kullanılabilir. Şuna bir göz at. Senin için yararlı olabilir.

+0

Bozukluğa işaret ettiğiniz için teşekkürler. Ama bunun iki dezavantajı olduğunu görüyorum: Birincisi, nesne odaklı değil ve kodu çözülmüş talimatlar bir ziyaretçiyi kabul etmiyor. ikincisi, işlenenleri bir dize olarak içerir, yani yeniden ayrıştırılması gerektiği anlamına gelir. – belgther

+1

Size detaylı destek sağlayan bir şey için ziyaretçi soyutlaması yazmak kolay olmalıdır. Gerçekten zor olan kısım "makine kodunun ayrıştırılmasıdır", ve deformasyon bu konuda iyi görünüyor. Ayrıca, bu bana dizgi ayrıştırma gibi görünmüyor: http://code.google.com/p/distorm/source/browse/trunk/examples/java/distorm/src/diStorm3/Operand.java – tucuxi

İlgili konular