Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

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

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
GoReSym — Go बाइनरीज़ को पार्स करके सिंबल्स, फ़ंक्शन मेटाडेटा, टाइप्स, फ़ाइल पाथ्स और एम्बेडेड स्ट्रिंग्स को पुनः प्राप्त करता है, जिसमें स्ट्रिप्ड या UPX-पैक्ड सैंपल्स भी शामिल हैं, साथ ही IDA Pro इम्पोर्ट सपोर्ट भी है। | Kitploit
उपकरण/GitHubGitHub/mandiant/goresym
स्थैतिक विश्लेषणरिवर्स इंजीनियरिंगडीबगर्सजानकारी एकत्र करनामालवेयर विश्लेषणडिजिटल फोरेंसिकबाइनरी विश्लेषण
GitHubmandiant/goresym

GoReSym

Go बाइनरीज़ को पार्स करके सिंबल्स, फ़ंक्शन मेटाडेटा, टाइप्स, फ़ाइल पाथ्स और एम्बेडेड स्ट्रिंग्स को पुनः प्राप्त करता है, जिसमें स्ट्रिप्ड या UPX-पैक्ड सैंपल्स भी शामिल हैं, साथ ही IDA Pro इम्पोर्ट सपोर्ट भी है।

रिपॉजिटरी देखें
1.1k113331 महीना पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

GoReSym

GoReSym Logo

GoReSym एक Go सिंबल पार्सर है जो प्रोग्राम मेटाडेटा (जैसे CPU आर्किटेक्चर, OS, एंडियननेस, कंपाइलर संस्करण, आदि), फ़ंक्शन मेटाडेटा (प्रारंभ और अंत पते, नाम, स्रोत), फ़ाइलनाम और पंक्ति संख्या मेटाडेटा, तथा एम्बेडेड संरचनाओं और प्रकारों को निकालता है। यह क्रॉस-प्लेटफ़ॉर्म प्रोग्राम सीधे ओपन सोर्स Go कंपाइलर और रनटाइम कोड पर आधारित है।

अपस्ट्रीम Go रनटाइम कोड को निम्नलिखित को संभालने के लिए विस्तारित किया गया है:

  • स्ट्रिप्ड बाइनरीज़
  • विकृत अनपैक्ड बाइनरीज़, जैसे UPX से
  • ऐसी बाइनरीज़ जो एकल डेटा रेंज को कई सेक्शनों में विभाजित करती हैं
  • moduledata संरचना का स्थान

उपयोग

रिवर्स इंजीनियरिंग विवरण और उदाहरण उपयोग के लिए https://www.mandiant.com/resources/blog/golang-internals-symbol-recovery देखें।

आप Releases टैब से पहले से बनी linux, macos, और windows GoReSym बाइनरीज़ डाउनलोड कर सकते हैं।

हाल के Go कंपाइलर के साथ स्रोत से बनाने के लिए, Go कंपाइलर को आमंत्रित करें:

go build

एक बार बन जाने के बाद GoReSym को इस तरह से लागू करें:

GoReSym.exe -t -d -p /path/to/input.exe

इस उदाहरण में, हम GoReSym से फ़ाइल /path/to/input.exe में एम्बेडेड टाइप नाम (-t), उपयोगकर्ता पैकेज नाम, मानक Go पैकेज नाम (-d), और इनपुट फ़ाइल पथ (-p) पुनर्प्राप्त करने के लिए कहते हैं। आउटपुट इस प्रकार दिखता है:

{
    "Version": "1.14.15",
    "BuildId": "Zb9QmokKTiOUgHKmaIwz/wd2rtE3W9PN-um1Ocdzh/qTdqcTY_jVajHy_-TtYv/Z_kJu9M77OjfijEiHMcF",
    "Arch": "amd64",
    "TabMeta": {
        "VA": 5174784,
        "Version": "1.2",
        "Endianess": "LittleEndian",
        "CpuQuantum": 1,
        "CpuQuantumStr": "x86/x64",
        "PointerSize": 8
    },
    "ModuleMeta": {
        "VA": 5678816,
        "Types": 4845568,
        "ETypes": 5171904,
        "Typelinks": {
            "Data": 5171904,
            "Len": 695,
            "Capacity": 695
        },
        "ITablinks": {
            "Data": 5174688,
            "Len": 11,
            "Capacity": 11
        },
        "LegacyTypes": {
            "Data": 0,
            "Len": 0,
            "Capacity": 0
        }
    },
    "Types": [ ... ],
    "Files": [ ... ],
    "Strings": [ ... ],
    "UserFunctions": [ ... ],
    "StdFunctions": [ ... ]
}

यहाँ सभी उपलब्ध फ़्लैग दिए गए हैं:

  • -d ("default", वैकल्पिक) फ़्लैग उपयोगकर्ता पैकेजों के अतिरिक्त मानक Go पैकेजों को भी प्रिंट करेगा।
  • -p ("paths", वैकल्पिक) फ़्लैग pclntab में एम्बेड किए गए किसी भी फ़ाइल पथ को प्रिंट करेगा।
  • -t ("types", वैकल्पिक) फ़्लैग Go प्रकार के नाम प्रिंट करेगा।
  • -strings (वैकल्पिक) फ़्लैग स्ट्रिंग इंटर्नमेंट तालिका का विश्लेषण करके बाइनरी से एम्बेड किए गए Go स्ट्रिंग्स को निकालेगा।
  • -m <virtual address> ("manual", वैकल्पिक) फ़्लैग दिए गए वर्चुअल एड्रेस पर RTYPE संरचना को पुनरावर्ती रूप से डंप करेगा
  • -v <version string> ("version", वैकल्पिक) फ़्लैग स्वचालित संस्करण पहचान को ओवरराइड करेगा और प्रदान किए गए संस्करण का उपयोग करेगा। यह कुछ स्ट्रिप्ड बाइनरीज़ के लिए आवश्यक है। यदि संस्करण सटीक नहीं है तो प्रकार पार्सिंग विफल हो जाएगी।
  • -human (वैकल्पिक) फ़्लैग JSON के बजाय एक सपाट टेक्स्ट सूची प्रिंट करेगा। संरचना और इंटरफ़ेस प्रकारों को प्रिंट करते समय विशेष रूप से उपयोगी।
  • -about (वैकल्पिक) फ़्लैग लाइसेंस जानकारी प्रिंट करेगा

इस जानकारी को IDA Pro में आयात करने के लिए आप https://github.com/mandiant/GoReSym/blob/master/IDAPython/goresym_rename.py में मौजूद स्क्रिप्ट चला सकते हैं। यह GoReSym द्वारा उत्पादित एक json फ़ाइल पढ़ेगी और IDA में सिंबल/लेबल सेट करेगी।

संस्करण समर्थन

चूँकि Go कंपाइलर और रनटाइम बदल गए हैं, वैसे ही एम्बेडेड मेटाडेटा संरचनाएँ भी बदल गई हैं। GoReSym Go रिलीज़ और मेटाडेटा के निम्नलिखित संयोजनों का समर्थन करता है:

  • ARM64 𝒙 Intel x86/x64 𝒙 MACH-O/ELF/PE 𝒙 big/little endian के सभी संयोजन
  • pclntab पार्सिंग: >= Go 1.2
  • moduledata स्थान: >= Go 1.2
  • moduledata प्रकार पार्सिंग: >= Go 1.5

प्रकारों को निकालने के लिए उपयोग की जाने वाली moduledata तालिका Go 1.5 से पहले मौजूद नहीं थी, इसलिए यह लाइब्रेरी बहुत पुराने Go संस्करणों से प्रकार निकालने का समर्थन कभी नहीं करेगी।

यह लाइब्रेरी वर्तमान में 1.2 से पहले, 1.2, 1.16, 1.18, और 1.20 के pclntab लेआउट को संभालती है। ध्यान दें कि pclntab संस्करण हमेशा <= Go रनटाइम संस्करण होता है (उदाहरण: Go रनटाइम 1.19, 1.18 pclntab लेआउट का उपयोग करता है), हमारा लक्ष्य हमेशा नवीनतम रनटाइम संस्करणों का समर्थन करना है।

योगदान

GoReSym का अधिकांश स्रोत कोड अपस्ट्रीम Go कंपाइलर स्रोत निर्देशिका /internal से कॉपी किया गया है। इसे कार्यशील बनाने के लिए, हमें स्रोत को थोड़ा संशोधित करना पड़ा। यदि आप GoReSym में योगदान देना चाहते हैं, तो आगे पढ़ें ताकि हम इस आयात प्रक्रिया को समझा सकें।

Go पैकेजों के कार्य करने के तरीके के कारण, हमें स्रोत फ़ाइल ट्री से /internal पथ को हटाना पड़ा। इसके परिणामस्वरूप आंतरिक Go फ़ाइलों की बहुत सारी प्रतिलिपि बनाई गई, जहाँ निर्देशिका ट्री अधिकतर बरकरार है लेकिन कई फ़ाइलों के इम्पोर्ट में छोटे बदलाव हैं: /internal पथों के संदर्भों को github.com/mandiant/GoReSym/ से बदल दिया गया।

हमने फ़ील्ड और मेथड्स को एक्सपोर्ट करने के लिए कई आंतरिक संरचनाओं को भी संशोधित किया। ये Go अपस्ट्रीम द्वारा एक्सपोर्ट नहीं किए जाते क्योंकि उपयोगकर्ताओं को इन पर निर्भर नहीं रहना चाहिए। हालाँकि, इस टूल का उद्देश्य आंतरिक जानकारी निकालना है, इसलिए हम इन संरचनाओं को बनाए रखने का कार्य अपने ऊपर ले रहे हैं। यह एक अच्छी स्थिति नहीं है, लेकिन इससे आसानी से बचा नहीं जा सकता। यदि आप इस रिपॉज़िटरी को अपडेट करते हैं, तो आपको इन संशोधनों को बरकरार रखने का ध्यान रखना होगा। अपस्ट्रीम फ़ाइलों को पूरी तरह कॉपी करने के बजाय अपस्ट्रीम से कमिट्स को मैन्युअल रूप से मर्ज करना शायद बेहतर होगा।

मैं इस बारे में सुझावों के लिए खुला हूँ कि इस प्रोजेक्ट को बेहतर ढंग से कैसे संरचित किया जाए ताकि इन समस्याओं से बचा जा सके और फिर भी सामान्य go build के साथ संकलन हो सके। Go मेंटेनर्स से जुड़ी एक पिछली चर्चा यहाँ है।

कुछ मामूली बदलावों को छोड़कर, अधिकांश नया लॉजिक /objfile में मौजूद है। उदाहरण के लिए, फ़ाइल objfile/internals उन रिवर्स्ड आंतरिक Go संरचनाओं को परिभाषित करती है जिन्हें GoReSym पार्स करता है।

संदर्भ

  • pclntab विनिर्देश: golang.org/s/go12symtab
  • pclntab मैजिक्स: pclntab.go#L169
  • objfile बग:
    • golang/go#42954
    • golang/go#47981
    • golang/go#47852
  • buildID लीगेसी बग: golang/go#50809
टूल डाउनलोड करें