Ghidra के लिए object file exporter extension

यह Ghidra extension प्रोग्राम के किसी हिस्से को object file के रूप में export करने की सुविधा देता है। इन object files में वैध metadata (symbols, relocation tables आदि) होता है, इसलिए इन्हें toolchain द्वारा सीधे दोबारा इस्तेमाल किया जा सकता है.

उपयोग के मामले

  • उन्नत binary patching: मूल और संशोधित हिस्सों को हाथ से जोड़ने के बजाय linker की मदद से संयोजित करना
  • software porting: system-independent code को प्रोग्राम से अलग करना और बाकी हिस्सों को बदलना
  • file format conversion: किसी प्रोग्राम या object file को दूसरे file format में बदलना
  • library बनाना: प्रोग्राम के किसी हिस्से को निकालकर दूसरे context में दोबारा उपयोग करना
  • decompilation project: प्रोग्राम को कई object files में विभाजित करना और उसे फिर से implement करना

समर्थित instruction set architectures और object file formats

  • x86: COFF (समर्थित), ELF (समर्थित)
  • MIPS: COFF (असमर्थित), ELF (समर्थित)

build (CLI)

  • इस repository को clone करें
  • GHIDRA_INSTALL_DIR environment variable को Ghidra installation directory पर सेट करें
  • gradle buildExtension command चलाएँ
  • Ghidra extension archive dist/ directory में बन जाएगा

installation

  • release page से extension डाउनलोड करें या local में build करें
  • Ghidra instance में File > Install Extensions… के जरिए extension install करें
  • CodeBrowser window में File > Configure के जरिए RelocationTableSynthesizedPlugin plugin को enable करें

उपयोग विधि

  1. Listing view में address set चुनें
  2. Relocation table synthesizer analyzer चलाएँ (one-shot mode में इस्तेमाल किया जा सकता है)
  3. File > Export Program… के जरिए relocatable object file exporter चलाएँ
  4. Window > Relocation table(synthesized) में पुनर्निर्मित relocation table देख सकते हैं
  • ⚠️ Relocation table synthesizer analyzer को पूरी तरह भरा हुआ Ghidra database चाहिए (सही तरह से घोषित symbols, data types और references)। गलत या छूटी हुई जानकारी analysis के दौरान गलत relocation या relocation का पता न चल पाने का कारण बन सकती है
  • ⚠️ object file exporter, Relocation table synthesizer analyzer के नतीजों पर निर्भर करता है। object file export करने से पहले इस analyzer को चलाकर सुनिश्चित करें कि relocation table की सामग्री up to date है

यह कैसे काम करता है

एक object file तीन हिस्सों से मिलकर बनी होती है:

  • relocatable section bytes
  • symbol table
  • relocation table

जब linker कई object files से executable बनाता है:

  • sections को memory में रखा जाता है
  • virtual address space में symbols के addresses की गणना की जाती है
  • section bytes पर symbols के अंतिम addresses के आधार पर relocations लागू किए जाते हैं

आमतौर पर इस प्रक्रिया के बाद relocation table को हटा दिया जाता है, और अगर debugging symbols सुरक्षित न रखे जाएँ तो symbol table भी हटा दी जाती है। लेकिन सावधानीपूर्वक analysis के जरिए इस data को फिर से बनाया जा सकता है, जिससे प्रोग्राम को दोबारा object file में delink किया जा सकता है.

GN⁺ का सारांश

  • यह Ghidra extension प्रोग्राम के किसी हिस्से को object file के रूप में export करने की सुविधा देता है.
  • उन्नत binary patching, software porting, file format conversion जैसे कई उपयोग के मामले हैं.
  • सटीक database की ज़रूरत होती है, और analyzer चलाने के बाद object file export करना महत्वपूर्ण है.
  • समान सुविधा देने वाले projects में IDA Pro जैसे decompilers शामिल हैं.

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.