2011-12-16 12 views
8

मैं निम्नलिखित विशेषताएं होनी चाहिए कि एक जावा 86 disassembler पुस्तकालय रहा हूँ:कोई ऑब्जेक्ट-ओरिएंटेड फ्लेक्सिबल जावा x86 डिससेबलर लाइब्रेरी?

  • वियोजन X86 कोड
  • बताते X86 जावा वर्गों के साथ आदेश और
  • आदेश कक्षाएं ऑब्जेक्ट्स एक आगंतुक जो एक है स्वीकार करना चाहिए सामान्य वापसी मान

तो, अगर मैं कुछ कोड है कि इस तरह एकत्रित न होता है:

MOV EAX, EBX 
CALL 1234 
JMP 88 

तब लाइब्रेरी को MOV, कॉल और जेएमपी के लिए तीन ऑब्जेक्ट्स बनाना चाहिए। फिर मैं एक आगंतुक को लागू करता हूं जो विविध चीजें करता है (उदा: व्याख्या करना, x64 में परिवर्तित करना या किसी अन्य प्रोसेसर आर्किटेक्चर के लिए निर्देश)।

अग्रिम धन्यवाद।

+0

मुझे विश्वास नहीं है कि इस तरह के एक डिस्सेबलर मौजूद है, क्योंकि असेंबलर प्रक्रियात्मक है। तो आप प्रक्रिया को फिर से डिजाइन किए बिना प्रक्रियात्मक से ऑब्जेक्ट ओरिएंटेड में परिवर्तित नहीं कर सकते हैं और यह हाथ से किया जाना चाहिए। – Zemzela

+0

बिंदु प्रक्रियात्मक रूप से ऑब्जेक्ट उन्मुख डिजाइन में कनवर्ट करने के बारे में नहीं है। मैं सिर्फ एक पुस्तकालय चाहता हूं जो जावा ऑब्जेक्ट्स के रूप में प्रक्रियाओं का वर्णन करता है और मैं जो कुछ भी चाहता हूं वह कर सकता हूं। – belgther

+1

लेकिन आप बाइनरी को अलग करने और जावा-प्रोग्राम के साथ आउटपुट को पार्स करने के लिए नियमित x86 डिस्सेबलर का उपयोग क्यों नहीं करते हैं। इसके बाद आप ऑब्जेक्ट्स की सूची में अलग-अलग कोड को पढ़ सकते हैं जो एमओवी या कॉल निर्देशों का प्रतिनिधित्व करता है; या आप जंप निर्देशों द्वारा उपखंडों की पहचान करने की कोशिश कर रहे वृक्ष संरचना का निर्माण करने का प्रयास कर सकते हैं। –

उत्तर

1

मुझे पूरी तरह से जावा लागू किसी भी पुस्तकालय के बारे में पता नहीं है। हालांकि, मैंने distorm डिस्सेबलर के बारे में सुना है। यह सी में विकसित किया गया है लेकिन जावा पुस्तकालय इस पुस्तकालय के लिए उपलब्ध हैं। इस पर एक नज़र डालो। यह आपके लिए उपयोगी हो सकता है।

+0

विकृति पर संकेत देने के लिए धन्यवाद। लेकिन मुझे लगता है कि इसके दो नुकसान हैं: पहला, यह वास्तव में ऑब्जेक्ट उन्मुख नहीं है और डीकोडेड निर्देश आगंतुक को स्वीकार नहीं करते हैं। दूसरा, इसमें ऑपरेंड को एक स्ट्रिंग के रूप में शामिल किया गया है, जिसका अर्थ है कि उन्हें फिर से पार्स किया जाना चाहिए। – belgther

+1

आपको कुछ समर्थन के लिए एक विज़िटर एब्स्ट्रक्शन लिखना जो आपको विस्तृत समर्थन प्रदान करता है, आसान होना चाहिए। वास्तव में कठिन हिस्सा "मशीन कोड पार्सिंग" है, और उस पर विकृति अच्छी लगती है। साथ ही, यह मेरे लिए स्ट्रिंग-पार्सिंग जैसा नहीं दिखता है: http://code.google.com/p/distorm/source/browse/trunk/examples/java/distorm/src/diStorm3/Operand.java – tucuxi

संबंधित मुद्दे