2011-01-12 9 views
8

मैं idapython प्लगइन का उपयोग कर पाइथन में IDA Pro डिस्सेबलर के लिए एक स्क्रिप्ट लिख रहा हूं। इसका उपयोग करके, मैं उन अंतरों को भरने में सक्षम हूं जहां आईडीए का ऑटो-विश्लेषण कम हो जाता है।सी ++ नाम हाथ से मैंगलिंग

एक क्षेत्र जिसने मुझे स्टंप किया है वह नाम/कार्यों का नामकरण कर रहा है (बेहतर शब्द की इच्छा के लिए) "सुंदर नाम"। मैं क्या मतलब का एक उदाहरण नीचे दर्शाया गया है:

IDA pretty names sample screenshot

idapython और आईडीए प्रो ही केवल मुझे बुनियादी सी-ish फ़ंक्शन नाम दर्ज करने के लिए अनुमति देते हैं। अगर मैं अस्वीकृत प्रतीकों (उदा। स्कोप रिज़ॉल्यूशन ऑपरेटर) दर्ज करता हूं, तो उन्हें अंडरस्कोर के साथ बदल दिया जाता है। हालांकि, अगर मैं हाथ से एक उलझन नाम दर्ज करता हूं (उदा। __ZN9IOService15powerChangeDoneEm), आईडीए प्रो मेरे लिए यह स्पष्ट करेगा।

इसलिए मेरा प्रश्न: idapython से गुज़रने के लिए मैं उलझन वाले नाम कैसे उत्पन्न कर सकता हूं? क्या कोई नाम-मैंगलिंग लाइब्रेरी उपलब्ध है? क्या पाइथन में उपलब्ध है? क्या मेरी एकमात्र उम्मीद है कि g++ से मैंगलिंग कार्यक्षमता को फाड़ें और उसके आसपास काम करें?

+2

मैं आशा करता हूं कि आप में ... सौभाग्य लग सकता है कि चारों ओर कुछ दस्तावेज़ है! –

उत्तर

6

मैं अंत में थोड़ा खोदने के लिए चारों ओर मिल गया।

दुर्भाग्यवश मुझे उपकरण नहीं मिला, हालांकि मुझे संसाधन मिल गया।

यदि आप चाहते हैं कि जीसीसी 3 फैशन में मैंगल नाम हों, तो पता करें कि जीसीसी 3 इटेनियम सी ++ एबीआई का उपयोग करता है, जिसमें एक मानक नाम मैंगलिंग योजना है। मैं दो दस्तावेज़ नहीं मिले:

संदर्भ के लिए की योजनाओं का वर्णन है, दोनों Name Mangling पर विकिपीडिया पृष्ठ से आते हैं।

+0

@ShafikYaghmour: धन्यवाद, मैंने इसे किसी अन्य वेबसाइट (linux-foundation.org) के लिंक से बदल दिया है। –

+0

मैं इस प्रश्न के आपके प्रश्न बी/सी पर आया: http://stackoverflow.com/questions/11335624/what-is-linux-utility-to-mangle-a-c-symbol-name?lq=1 जो समान है –

3

एक सरल (एलीबिट हैकी) विधि एक सी ++ फ़ाइल को उस प्रतीक के साथ संकलित करना होगा जिसमें आप चाहते हैं, तो .o फ़ाइल की प्रतीक तालिका से आवश्यक प्रतीकों को निकालें। कुछ काम के साथ यह अच्छी तरह से पटकथा योग्य हो सकता है।

+0

मैंने हाईस्कूल में अपने पहले सी ++ कार्यक्रम पर ऐसा किया था। यह नहीं पता था कि यह सैंटर्ड या कुछ और नहीं था। इससे मुझे मॉड्यूल सिस्टम को लागू करने में मदद मिली, जिससे नरम (गेम) को आसानी से बढ़ाया जा सके। मुझे यह भी पता नहीं था कि इस तरह की चीज तुच्छ नहीं थी। – Klaim

1

यहां एक article है जो बताता है कि विज़ुअल कंपाइलर द्वारा मैंगलिंग कैसे किया जाता है। जीसीसी द्वारा किए गए मैंगलिंग के लिए, मुझे लगता है कि आप binutils पैकेज के स्रोत में जानकारी पा सकते हैं।