2010-09-03 7 views
6

मेरे पास एक एक्सई है जिसे मैंने पीई एक्सप्लोरर डिससेबलर के साथ खोला है। अब मैं एएसएम कोड देख सकता हूं, जो इस तरह दिखता है:एएसएम को पढ़ने योग्य कोड में कैसे परिवर्तित करें?

push ebx 
    push esi 
    mov ebx,eax 
    mov eax,[ebx+38h] 
    push eax 
    mov eax,[ebx+3Ch] 
    push eax 
    mov ecx,edx 
    mov eax,ebx 
    mov edx,[ebx+30h] 
    mov esi,[eax] 
    call [esi+7Ch] 
    or byte ptr [ebx+00000088h],02h 
    pop esi 
    pop ebx 
    retn 

मुझे नहीं पता कि इसका क्या अर्थ है। क्या इसे अब रीड-सक्षम कोड (सी, सी ++, सी # या वीबी.नेट) में परिवर्तित करने का कोई तरीका है?

पृष्ठभूमि जानकारी: मुझे इसकी आवश्यकता क्यों है क्योंकि मुझे उपरोक्त फ़ंक्शन को अपने विंडोज ऐप से कॉल करने की आवश्यकता है। अब यह फ़ंक्शन तृतीय पक्ष exe में रहता है - इसके लिए कोई एपीआई या स्रोत-कोड नहीं है। किसी भी मदद या सलाह की सराहना की है।

उत्तर

0

जो आप चाहते हैं उसे "अपघटन" कहा जाता है।

कार्य को हल करना आसान नहीं है, और अक्सर संभव नहीं है। आप शुरुआत के रूप में Google आज़मा सकते हैं।

+0

मैंने सीपी पर निम्नलिखित आलेख पढ़ा: http://www.codeproject.com/KB/cpp/funccaller.aspx - क्या मैं वही तरीकों को लागू कर सकता हूं? – vikasde

+0

यही डिकंपिलर करता है (कई अन्य चीजों के बीच)। निश्चित रूप से आप ऐसा कर सकते हैं, लेकिन यह 5 मिनट का कार्य नहीं है। – BarsMonster

+0

ठीक है। मैंने इस आलेख में जिस तरीके से वर्णित किया था, उसे करने की कोशिश की, लेकिन मुझे कोई समझ नहीं आया जो कि मुझे समझ में आएगा। – vikasde

0

आप इसे सी या कुछ अन्य भाषाओं में पॉइंटर्स के साथ डिकंपाइल कर सकते हैं, लेकिन यह अब भी अधिकतर पढ़ा जा सकता है।

1

यदि आप इसे पकड़ सकते हैं, तो आईडीए प्रो + हेक्स-रे अर्ध-पठनीय कोड में इसे संकुचित कर सकता है।

+1

अरे, केवल 2000 EUR सबकुछ एक साथ;) ... मैं वर्षों से आईडीए प्रो का ग्राहक रहा हूं, लेकिन एक व्यक्ति के रूप में मुझे अभी भी प्लगइन के लिए और भी खोलने के लिए परेशान नहीं किया जा सकता है। – 0xC0000022L

2

आपको यह जानना होगा कि कौन से तर्क उपयोग किए जाते हैं। इस मामले में, ऐसा लगता है कि eax & edx रजिस्टरों में इस दिनचर्या में तर्क पारित किए जाते हैं। एक बार जब आप जानते हैं कि उन मानों का क्या अर्थ है, तो आप शायद यह पता लगा सकते हैं कि इस दिनचर्या का उपयोग कैसे किया जाता है और आप जिस भी भाषा का उपयोग कर रहे हैं उसे फिर से कोड कर सकते हैं।

0

पहली नज़र में, यह ऑब्जेक्टिव कोड है; यह किसी ऑब्जेक्ट को तर्क के रूप में (कम से कम) प्राप्त करता है, उस ऑब्जेक्ट की एक विधि को कॉल करता है जो ऑब्जेक्ट के गुणों में से तीन तर्कों को लेता है और फिर एक ही ऑब्जेक्ट की दूसरी विशेषता में एक बिट (ध्वज?) सेट करता है।

आईडीए प्रो शायद फ़ंक्शन प्रोटोटाइप की पहचान करने में सक्षम होगा और इसमें एक मुफ़्त संस्करण उपलब्ध है जिसमें आपकी सभी सुविधाएं हैं: http://www.hex-rays.com/idapro/idadownfreeware.htm। हालांकि यह आपको केवल फ़ंक्शन के प्रोटोटाइप का विचार देगा, न कि यह व्यवहार (जब तक आप x86 असेंबली "पढ़ नहीं सकते)। इसे सादे सी/सी ++ में वापस करने के लिए हेक्सरेज़ प्लगइन की आवश्यकता होती है जो कि महंगी है और हमेशा काम नहीं करती है (उच्च स्तर की भाषा में अपघटन बल्कि जटिल है)।

0

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

जो आप खोज रहे हैं वह "अपघटन" नहीं है क्योंकि आप इसे पहले से ही कोड कोड में डिकंपल कर चुके हैं। आप जो कुछ भी पढ़ना चाहते हैं उसमें डिस्सेम्बल कोड का संकलन एक प्रकार है जिसे आप पढ़ सकते हैं (जैसे सी)

रिवर्स इंजीनियरिंग का यह क्षेत्र अभी भी विकसित नहीं हुआ है। कुछ कुछ महंगा प्लग इन के साथ आईडीए उल्लेख किया है, लेकिन यह क्या करेंगे आप कोई अच्छा ... मुझे लगता है कि आप मदद कर सकता है केवल कार्यक्रम का उल्लेख होगा: REC

उत्पादन सटीक नहीं हो सकती या आप किसी भी सी प्राप्त करने में सक्षम नहीं हो सकता है उस प्रोग्राम के आधार पर कोड जो आप डीबग करना चाहते हैं। लेकिन अगर आप असेंबली नहीं जानते हैं तो यह आपके पास सबसे अच्छा विकल्प है।

जो भी आप करने की कोशिश कर रहे हैं, उसके लिए आपके द्वारा पोस्ट किया गया फ़ंक्शन कुछ भी नहीं करता है। यह पैरामीटर के साथ एक और समारोह कहते हैं और वापसी मूल्य मिलता है। आप क्या चाहते हैं कॉल [esi + 7Ch] है। आपको इस कॉल में एक डीबगर और कदम चाहिए।

अपने कार्यक्रम के अंदर उस समारोह को हुक करने के लिए एक और कहानी है ... आप इसे बेहतर ढंग से लिखेंगे।

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