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

(lldb) image list my_module
[  0] XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX 0x00000000deadbeef /path/to/my_module
(lldb) breakpoint set -a 0x00000000deadbeef + 0x1234

और मैं इसे स्वचालित करना चाहता हूं। उसके लिए, मुझे my_module का लोड पता प्राप्त करना होगा। एलएलडीबी के image list कमांड का उपयोग करने और परिणामी पते को पढ़ने जैसा कुछ।

मुझे विधि SBModule.ResolveFileAddress() मिली, जो विपरीत रूपांतरण करती है - यह पूर्ण पता लेता है और इसे एक सापेक्ष-से-मॉड्यूल में परिवर्तित करता है।

क्या कोई ऐसा फ़ंक्शन है जो SBModule ऑब्जेक्ट, या मॉड्यूल नाम लेता है, और उस मॉड्यूल का लोड लौटाता है?

0
LeeNeverGup 8 जिंदा 2020, 17:03

1 उत्तर

सबसे बढ़िया उत्तर

मॉड्यूल में वास्तव में प्रति लोड पते नहीं होते हैं। कई प्रणालियों पर, मॉड्यूल के विभिन्न वर्गों को स्वतंत्र रूप से स्थानांतरित किया जा सकता है, इसलिए प्रत्येक अनुभाग में एक अलग लोड पता हो सकता है। यह मच-ओ पर साझा कैश में भी हो सकता है, हालांकि सामान्य तौर पर मच-ओ एक इकाई के रूप में बायनेरिज़ को लोड करता है।

"इमेज लिस्ट" बाइनरी के टेक्स्ट सेक्शन का लोड एड्रेस दिखाती है। यदि आप जानते हैं कि आप जिस प्रतीक की तलाश कर रहे हैं वह टेक्स्ट सेक्शन में है, तो आप एसबीमॉड्यूल से एसबी सेक्शन प्राप्त कर सकते हैं (इसमें "सेक्शन" संपत्ति है जो चलने योग्य है) टेक्स्ट सेक्शन ढूंढें और उसका लोड पता प्राप्त करें।

1
Jim Ingham 8 जिंदा 2020, 20:27