2008-11-15 15 views
16

मैं अनियंत्रित डीएलएल फ़ंक्शन के पैरामीटर कैसे ढूंढ सकता हूं?ढूँढना डीएल फंक्शन पैरामीटर्स

मैंने पूरे इंटरनेट पर खोज की है और एक तरह से खोजना समाप्त कर दिया है: इसमें सजाए गए कार्यों को शामिल किया गया है। हालांकि, मुझे उनको पाने का कोई तरीका नहीं मिल रहा है।

किसी भी मदद की सराहना की जाएगी।

उत्तर

6

पॉल नोट करते हुए आपको एप्लिकेशन को अलग करने की आवश्यकता है, जैसे आईडीए प्रो (या इसका मुफ्त संस्करण)।

एक अच्छा प्रारंभिक संसाधन विकीबुक, x86 Disassembly है। विशेष रूप से, functions and stack frames पर सेक्शन पर एक नज़र डालें। मानक कार्य के कुछ पैरामीटर लेने वाले सरल कार्यों के लिए डीड्यूसिंग फ़ंक्शन पैरामीटर सरल हो सकते हैं।

शायद इस तरह की चीज के साथ शुरू करने का सबसे अच्छा तरीका एक छोटा परीक्षण डीएलएल बनाना है, ज्ञात मानकों के साथ कुछ फ़ंक्शन बनाएं, और फिर पैटर्न देखने के लिए अपने डीएलएल को अलग करें। तीसरे पक्ष की सामग्री को अलग करने के बजाय अपने कार्यों से अलग-अलग हिस्सों को सीखें (जिसके लिए आपके पास स्रोत कोड है और पूर्ण हस्ताक्षर पता है)।

+1

एचआरएम .... मेरे उत्तर के अनुसार: पी (मजाक करना ठीक है;), किसी भी तरह आपको बिल्कुल अलग करने की आवश्यकता नहीं है, आप इसका सहारा लेने से पहले अधिक सटीक जानकारी प्राप्त कर सकते हैं वास्तव में, मैंने सुझाए गए चरणों के बाद यह आखिरी संभव उपाय है। – RandomNickName42

5

ऐसा करने का एकमात्र तरीका फ़ंक्शन को अलग करना और यह देखना है कि यह रजिस्टरों और ढेर का उपयोग कैसे करता है। आईडीए प्रो ऐसा करने का सबसे अच्छा टूल है, लेकिन यह कुछ ऐसा नहीं है जो तुच्छ है।

+0

अच्छा जवाब, मुझे शायद मेरा हटाना चाहिए। मुझे अपने ब्रेवटी पर काम करना है :) –

1

यदि आपके पास मौजूद जानकारी का एकमात्र टुकड़ा अवांछित फ़ंक्शन नाम है, तो दुर्भाग्य से उसमें से फ़ंक्शन पैरामीटर को कम करना संभव नहीं है।

यदि आप असेंबली के साथ अच्छे हैं तो फ़ंक्शन के लिए मशीन कोड को अलग करना संभव हो सकता है और इसे रिवर्स इंजीनियर कर सकते हैं। लेकिन सबसे आसान कार्यों के लिए यह करना मुश्किल है।

1

मैं वास्तव में पीई प्रारूप से परिचित नहीं हूं जो विंडोज का उपयोग करता है, लेकिन मुझे पूरा यकीन है कि ऐसा करने का कोई आसान तरीका नहीं है। यदि प्रतीक तालिका को छीन लिया नहीं गया है तो आप कुछ जानकारी प्राप्त कर सकते हैं (सुनिश्चित नहीं है कि विंडोज पीई में डीबगिंग जानकारी कैसे स्टोर करता है) लेकिन यह लगभग निश्चित रूप से पैरामीटर प्रकारों में आपकी सहायता नहीं करेगा। सबसे अच्छी बात यह है कि डीएलएल को डीबगर में लोड करें और इसके साथ प्रयोग करें ... स्टैक फ्रेम पर कच्ची मेमोरी की निगरानी करें, विभिन्न चर प्रकारों को भेजें,

भले ही आपको डिबगिंग जानकारी पर अच्छा संसाधन मिल जाए एक पीई फ़ाइल में, लगभग निश्चित रूप से एक निजी समारोह के लिए कोई जानकारी नहीं होगी।

4

क्या यह COM Dll है? यदि यह एक COM Dll है, तो इसे पंजीकृत करें, इंटरफेस और पैरामीटर जानने के लिए ओएलई व्यू का उपयोग करें।

2

सबसे पहले, Dependency Walker डाउनलोड करें और इसमें अपना डीएलएल खोलें। आप निर्यात और आयातित प्रतीक देखेंगे। यदि आपका फ़ंक्शन नाम _ MyFunction जैसा दिखता है - यह "सी" शैली है (सजाया नहीं गया है) और आपके पास इसके साथ बहुत कुछ करने के लिए बहुत कुछ नहीं है (

यदि यह अधिक है? _MyFunction @ LoNgSetOfSome @ _StrangeChAracTers यह C++ है - सजाया गया है और मैंने किया था आप से here

+0

पीई एक्सप्लोरर माइक्रोसॉफ्ट और बोर्लैंड सी ++ कंपाइलर्स दोनों के साथ संकलित पुस्तकालयों से निर्यात किए गए प्रतीकों को आंतरिक रूप से असम्बद्ध करने में सक्षम है: http://www.heaventools.com/unmangle.htm – Wylder

7

करने के लिए "undecorate" इसे प्रयोग {अनौपचारिक} जानकारी कोशिश कर सकते हैं एक काफी गहराई जवाब here, ReactOS आपका सर्वश्रेष्ठ दांव है, क्योंकि यह फिर से लगता है, हर कोई यहाँ आधार से थोड़ा सा है।

मैं सिस्टम डीएलएल को अलग करने का प्रयास करके दृढ़ता से हतोत्साहित करता हूं।

बहुत अधिक साहसी (और मुझे चीजों के दिखने से अब तक चर्चा नहीं है), तकनीक पीडीबी की सामग्री को गिनती करना है।

पीडीबी फाइलें डीबग प्रतीक हैं, जैसा कि आप जानते हैं, हालांकि, एंटी-ट्रस्ट कोर्ट के मामलों की कार्रवाई के कारण माइक्रोसॉफ्ट की आवश्यकता है, अन्यथा अनधिकृत जानकारी के बड़े संस्करणों को जारी करने के लिए।

विंडोज एपीआई की भारी मात्रा के लिए पूरी तरह से सटीक, प्रयोग योग्य और अद्यतन जानकारी केवल पीडीबी फ़ाइल के माध्यम से दस्तावेज है। कॉलिंग सम्मेलन, तर्क गणना और यहां तक ​​कि तर्क प्रकार और नाम उनके दस्तावेज हैं (हालांकि पाठ्यक्रम के उपयोग के बारे में विशिष्ट नहीं हैं :)।

डीआईए एसडीके की समीक्षा करें, डीआईए 2 डंप विजुअल स्टूडियो के साथ वितरित एक अच्छा उदाहरण है, आगे की जांच के लिए, यह आपके प्रश्न के लिए विशेष रूप से बोलने के लिए फ़ंक्शन की अनदेखी करने का समाधान भी प्रदान करता है।

इसके अलावा, kernel32 UnDecorateSymbolName प्रदान करता है, इसलिए यदि आप डीबग एसडीके पुस्तकालयों से लिंक नहीं करना चाहते हैं तो आप इसका भी उपयोग कर सकते हैं।

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