2010-05-24 20 views
7

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

मैं cat myexe mydata > myexe_with_mydata का उपयोग कर आसानी से ऐसा कर सकता हूं, लेकिन मैं निष्पादन योग्य से डेटा तक नहीं पहुंच सका क्योंकि मुझे मूल निष्पादन योग्य आकार का पता नहीं है।

क्या किसी को यह पता है कि मैं इसे कैसे कार्यान्वित कर सकता हूं? मैंने निष्पादन योग्य में डेटा की शुरुआत का पता लगाने के लिए निष्पादन योग्य में एक अनुभाग जोड़ने या उदाहरण के लिए एक विशेष मार्कर (0xBADBEEFC0FFEE) का उपयोग करने का विचार किया, लेकिन मुझे नहीं पता कि ऐसा करने का एक और सुंदर तरीका है या नहीं।

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

उत्तर

5

आप objcopy (1) के साथ एक विशेष खंड के रूप में योगिनी फाइल करने के लिए फ़ाइल जोड़ सकते हैं: (

objcopy --addsection sname=file oldelf newelf 

oldelf और newelf लिए परिणाम लिखने के लिए फ़ाइल जोड़ देगा oldelf नहीं होगा संशोधित) आप एल्फ़ फ़ाइल पढ़ने और नाम से अनुभाग निकालने के लिए libbfd का उपयोग कर सकते हैं या अनुभाग अनुभाग को पढ़ते हुए अपना स्वयं का कोड रोल कर सकते हैं और आपको अनुभाग ढूंढ सकते हैं। एक सेक्शन नाम का उपयोग करना सुनिश्चित करें जो सिस्टम की अपेक्षा की किसी भी चीज़ से टकरा नहीं है - जब तक आपका नाम . से शुरू नहीं होता है, तो आपको ठीक होना चाहिए।

+0

मुझे नहीं पता था कि objcopy ऐसा कर सकता है! धन्यवाद। –

1

मैंने elfdataembed नामक एक छोटी लाइब्रेरी बनाई है जो objcopy का उपयोग करके एम्बेडेड अनुभागों को निकालने/संदर्भित करने के लिए एक सरल इंटरफ़ेस प्रदान करता है। यह आपको ऑफ़सेट/आकार को किसी अन्य टूल पर पास करने की अनुमति देता है, या फ़ाइल डिस्क्रिप्टर का उपयोग करके इसे रनटाइम से सीधे संदर्भित करता है। उम्मीद है कि यह भविष्य में किसी की मदद करेगा।

यह उल्लेख करने योग्य है कि यह दृष्टिकोण एक प्रतीक को संकलित करने से अधिक कुशल है, क्योंकि यह बाह्य उपकरण को निकालने की आवश्यकता के बिना डेटा को संदर्भित करने की अनुमति देता है, और इसे पूरे बाइनरी को स्मृति में लोड करने की आवश्यकता नहीं होती है इसे निकालने/संदर्भित करने के लिए।

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