वर्तमान में मैं थोड़ा कार्यक्रम है कि योगिनी फ़ाइल शीर्षक पढ़ता है और कुछ जानकारीपढ़ना ELF हैडर
मैं एक अहस्ताक्षरित चार सूचक जो buf स्थान (मैं कहाँ योगिनी फ़ाइल स्मृति में स्थित है के लिए अंक कहा जाता है प्रिंट लिख रहा हूँ mmap इस्तेमाल किया स्मृति को यह मैप करने के लिए), तो मैं इसे एक उचित योगिनी हैडर सूचक
Elf32_Ehdr *ehdr = (Elf32_Ehdr *)buf;
को टाइपकास्ट इस मैं इस कार्यक्रम हैडर तालिका के गैर-पता प्राप्त करना चाहते हैं के बाद, मैं इसे इस
Elf32_Phdr *ptbl = (Elf32_Phdr *) (buf + ehdr->e_phoff)
पसंद करते हैं
मैं ptbl सूचक का मूल्य देखा परिवर्तन नहीं करता है और जब मैं इस
fprintf(stdout , "Offset of program headers : %d\n", ehdr->e_phoff);
तरह e_phoff सदस्य का मान प्रिंट करने का प्रयास मैं शून्य एक ही सामान होता है जब मैं कार्यक्रम की संख्या मुद्रित करने के लिए कोशिश के रूप में हेडर और सेक्शन हेडर की संख्या - हमेशा शून्य प्राप्त करें यदि मैं लिनक्स को स्वयं का उपयोग करता हूं, तो यह उचित मान प्रिंट करता है क्या किसी को भी एक ही समस्या का अनुभव होता है?
मुझे लगता है कि मुझे समस्या मिली है, मैं 64 बिट मशीन का उपयोग कर रहा हूं, इसलिए मैंने अभी Elf32_Phdr को Elf64_Phdr में बदल दिया है और यह –
काम करता है अपने उत्तर का उत्तर दें। अगर आपको पहले जवाब मिल जाए तो यह करने के लिए एक वैध बात है। जाहिर है, आपने गलत स्ट्रक्चर पॉइंटर प्रकार का उपयोग किया है, इसलिए आप इच्छित इरादे की स्मृति अपस्ट्रीम का संदर्भ दे रहे थे। –
मैं libelf का उपयोग करने का सुझाव देते हैं। –