रिवर्स इंजीनियर बाइनरी फ़ाइल स्वरूपों में मदद करने के लिए उपकरण


82

अज्ञात बाइनरी डेटा प्रारूपों को डिकोड करने में सहायता के लिए कौन से उपकरण उपलब्ध हैं?

मैं हेक्स वर्कशॉप और 010 संपादक दोनों समर्थन संरचनाओं को जानता हूं। ये एक ज्ञात निश्चित प्रारूप के लिए एक सीमित सीमा तक ठीक हैं, लेकिन विशेष रूप से अज्ञात प्रारूपों के लिए अधिक जटिल कुछ भी उपयोग करना मुश्किल हो जाता है। मुझे लगता है कि मैं एक स्क्रिप्टिंग भाषा या एक स्क्रिप्ट योग्य GUI टूल के लिए एक मॉड्यूल देख रहा हूं।

उदाहरण के लिए, मैं सीमित ज्ञात जानकारी से डेटा के ब्लॉक के भीतर एक संरचना खोजने में सक्षम होना चाहूंगा, शायद एक जादू की संख्या। एक बार जब मुझे एक संरचना मिल गई, तो ज्ञात लंबाई का पालन करें और अन्य संरचनाओं को खोजने के लिए शब्दों को ऑफसेट करें। फिर इस पुनरावृत्ति और पुनरावृत्ति को दोहराएं जहां यह समझ में आता है।

मेरे सपनों में, शायद मैंने जो पहले ही सिस्टम को बताया है, उसके आधार पर स्वचालित रूप से संभावित ऑफसेट और लंबाई की पहचान कर सकता हूं!


1
आपके प्रश्न का सीधा उत्तर नहीं: क्या आपके पास निष्पादन योग्य फाइलें नहीं हैं जो इन बाइनरी फाइलों के साथ अज्ञात प्रारूपों के साथ काम करती हैं? रिवर्स इंजीनियर को रिंग 3 डीबगर जैसे ओलीडबग का उपयोग करने के बजाय बल फ़ाइल स्वरूपों को भंग करने की कोशिश करने की तुलना में बहुत आसान होगा।
डैनियल स्लोफ

अरे हाँ, उन ऐप्स में से एक जो मुझे "जो प्रोग्राम आप कभी भी लिखना चाहते थे, उसमें जोड़ा जाना चाहिए था लेकिन इसे करने का समय कभी नहीं मिला" सवाल;)
devio

कुछ मामलों में मेरे पास निष्पादन योग्य फाइलें हैं जो उन्हें एक हद तक संसाधित करती हैं। कभी-कभी फाइलें निष्पादन योग्य कोड होती हैं (लेकिन एक मानक प्रारूप में नहीं) और अच्छी तरह से अपने स्वयं के डिकोडिंग रूटीन हो सकते हैं। हमारे पास एक प्रारंभिक बिंदु के रूप में आंशिक प्रलेखन के सीमित हिस्से हो सकते हैं। अन्य मामलों में मेरे पास कुछ भी नहीं है।
Mat

जवाबों:


22

यहाँ कुछ सुझाव दिए गए हैं जो मन में आते हैं:

मेरे अनुभव से, इंटरैक्टिव स्क्रिप्टिंग भाषाएँ (मैं पायथन का उपयोग करता हूं) एक बड़ी मदद हो सकती है। आप बाइनरी स्ट्रीम और कुछ सरल एल्गोरिदम से निपटने के लिए एक सरल फ्रेमवर्क लिख सकते हैं। फिर आप स्क्रिप्ट लिख सकते हैं जो आपके बाइनरी को ले जाएगा और विभिन्न चीजों की जांच करेगा। उदाहरण के लिए:

विभिन्न भागों पर कुछ सांख्यिकीय विश्लेषण करें। उदाहरण के लिए, रैंडम डेटा आपको बताएगा कि यह हिस्सा संभवतः संपीड़ित / एन्क्रिप्ट किया गया है। शून्य का मतलब भागों के बीच पैडिंग हो सकता है। बिखरे शून्य का मतलब पूर्णांक मान या यूनिकोड स्ट्रिंग और इतने पर हो सकता है। विभिन्न ऑफ़सेट्स को स्पॉट करने का प्रयास करें। बाइनरी के हिस्सों को 2 या 4 बाइट पूर्णांक या फ्लोट में बदलने की कोशिश करें, उन्हें प्रिंट करें और देखें कि क्या वे सेंस बनाते हैं। कुछ फ़ंक्शन लिखें जो डेटा में दोहराए जाने वाले या बहुत समान भागों की खोज करेंगे, इस तरह से आप आसानी से हेडर स्पॉट कर सकते हैं।

जितना संभव हो उतने तार खोजने की कोशिश करें, विभिन्न एन्कोडिंग (सी तार, पास्कल स्ट्रिंग, utf8 / 16, आदि) का प्रयास करें। उसके लिए कुछ अच्छे उपकरण हैं (मुझे लगता है कि हेक्स वर्कशॉप में ऐसा एक उपकरण है)। स्ट्रिंग्स आपको बहुत कुछ बता सकते हैं।

सौभाग्य!


नीचे दिए गए जवाब में से Hachoir बिल्कुल इसी तरह की रूपरेखा है। यह खेतों के पूर्वनिर्धारित सेट के साथ आता है: विभिन्न प्रकार के तार, तिथियां, बिट्स, फ्लोट्स, पैडिंग, इत्यादि निर्मित पार्सर्स डॉक्स के साथ उदाहरण के रूप में उपयोग किए जा सकते हैं।
रोलेबो

15

Mac OS X के लिए, एक नया बढ़िया टूल है जो मेरे iBored से भी बेहतर है: Synaliyze It! ( http://www.synalysis.net/ )

IBored की तुलना में , यह गैर-अवरुद्ध फ़ाइलों के लिए बेहतर अनुकूल है, जबकि संरचना पर पूर्ण नियंत्रण भी देता है, जिसमें स्क्रिप्टबिलिटी (दुआ के साथ) शामिल है। और यह संरचनाओं को बेहतर तरीके से भी कल्पना करता है।


10

तुपनी ; मेरी जानकारी सीधे Microsoft अनुसंधान से बाहर उपलब्ध नहीं है, लेकिन इस उपकरण के बारे में एक पेपर है जो किसी ऐसे ही कार्यक्रम (शायद खुला स्रोत) को लिखने के इच्छुक किसी व्यक्ति के लिए दिलचस्पी का हो सकता है:

तुपनी: इनपुट फॉर्मेट्स ( @ ACM डिजिटल लाइब्रेरी ) की स्वचालित रिवर्स इंजीनियरिंग

सार

हाल के काम ने प्रोटोकॉल या फ़ाइल प्रारूप विनिर्देशों के स्वचालित रिवर्स इंजीनियरिंग के महत्व को स्थापित किया है। हालाँकि, पिछले टूल द्वारा रिवर्स किए गए प्रारूप में महत्वपूर्ण जानकारी छूट गई है जो सुरक्षा अनुप्रयोगों के लिए महत्वपूर्ण है। इस पत्र में, हम तुपनी को प्रस्तुत करते हैं, जो एक इंजीनियर को इनपुट प्रारूप को रिकॉर्ड के अनुक्रम, रिकॉर्ड प्रकार और इनपुट बाधाओं सहित जानकारी के एक समृद्ध सेट के साथ उलट सकता है। Tupni कई इनपुट पर प्रारूप विनिर्देश को सामान्य कर सकता है। हमने टुपनी के एक प्रोटोटाइप को लागू किया है और 10 अलग-अलग प्रारूपों पर इसका मूल्यांकन किया है: पांच फ़ाइल प्रारूप (WMF, BMP, JPG, PNG और TIF) और पांच नेटवर्क प्रोटोकॉल (DNS, RPC, TFTP, HTTP और FTP)। टुपनी ने परीक्षण इनपुट में सभी रिकॉर्ड अनुक्रमों की पहचान की। हम यह भी दिखाते हैं कि, कई WMF फ़ाइलों को एकत्रित करके, Tupni WMF के लिए अधिक पूर्ण प्रारूप विनिर्देश प्राप्त कर सकता है। इसके अलावा, हम ज़ूपोडे भेद्यता हस्ताक्षर पीढ़ी के लिए प्रदान की गई समृद्ध जानकारी का उपयोग करके तुपनी की उपयोगिता प्रदर्शित करते हैं, जो कि पिछले रिवर्स इंजीनियरिंग टूल के साथ संभव नहीं था।



8

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

पूरी बात एक विजुअल बेसिक बोली में प्रोग्राम करने योग्य है, जिससे आप मूल्यों का परीक्षण कर सकते हैं, विशिष्ट ब्लॉक पढ़ सकते हैं, और सभी।

यह उपकरण मुफ़्त है, सभी प्लेटफार्मों (विन, मैक, लिनक्स) पर काम करता है, लेकिन जैसा कि यह निजी उपकरण है जिसे मैंने इसे साझा करने के लिए केवल जनता के लिए जारी किया है, यह बहुत दस्तावेज नहीं है।

हालाँकि, यदि आप इसे आज़माना चाहते हैं, और प्रतिक्रिया देना चाहते हैं, तो मैं अधिक उपयोगी सुविधाएँ जोड़ सकता हूँ।

मैं इसका स्रोत भी खोलूंगा, लेकिन जैसा कि REALbasic में लिखा गया है , मुझे संदेह है कि कई लोग इस तरह की परियोजना में शामिल होंगे।

लिंक: iBored मुख पृष्ठ


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

एक अच्छा द्विआधारी फ़ाइल विश्लेषण उपकरण की शुरुआत की तरह लग रहा है, लेकिन अभी भी बहुत डिस्क-केंद्रित है (512-बाइट ब्लॉक थोड़ा-सा देना है ...)
स्टीव बेनेट

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

6

मैं अभी भी कभी-कभी एक पुराने हेक्स संपादक का उपयोग करता हूं जिसे एएक्स, एडवांस्ड हेक्स संपादक कहा जाता है। ऐसा लगता है कि यह अब इंटरनेट से काफी हद तक गायब हो गया है, हालांकि Google को अभी भी इसे आपके लिए खोजने में सक्षम होना चाहिए। अंतिम संस्करण जो मुझे पता था कि संस्करण 3.4 था, लेकिन मैंने वास्तव में केवल फ्री-फॉर-पर्सनल-उपयोग संस्करण 2.1 का उपयोग किया है।

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

मुझे लगता है कि यह आंख से करना काफी हद तक स्वचालित विश्लेषण करने के विपरीत है, हालांकि, और ग्राफिकल मोड ऑफ़सेट को खोजने और उनका अनुसरण करने के लिए बहुत अधिक उपयोग नहीं होगा ...

बाद के संस्करण में कुछ विशेषताएं हैं जो ध्वनि करते हैं जैसे वे आपकी आवश्यकताओं (लिपियों, नियमितता खोजक, व्याकरण जनरेटर) को फिट कर सकते हैं, लेकिन मुझे नहीं पता कि वे कितने अच्छे हैं।


यूआरएल मर चुका है, हो सकता है यह अब यहाँ है: advanced-hex-editor-axe.en.softonic.com
स्टीव बेनेट

@ हेड-अप के लिए धन्यवाद। वही है वो। सभी वायरस-मुक्त वादों के बावजूद, हालांकि, मेरे वायरस स्कैनर ने मुझे वायरस चेतावनी दी है कि मैं इसे डाउनलोड करने की कोशिश कर रहा हूं, इसलिए मैंने परेशान नहीं किया। मैंने अपना जवाब फिर से दे दिया है।
व्यापारी

6

नहीं है Hachoir जो खेतों में किसी भी द्विपदीय प्रारूप पार्स करने के लिए एक अजगर पुस्तकालय है, और फिर खेतों ब्राउज़ करें। इसमें आम प्रारूपों के लिए बहुत सारे पार्सर हैं, लेकिन आप अपनी फ़ाइलों के लिए स्वयं के पार्सर भी लिख सकते हैं (उदाहरण के लिए जब कोड के साथ काम करना बाइनरी फ़ाइलों को पढ़ता या लिखता है, तो मैं आमतौर पर एक डीबगिंग सहायता के लिए सबसे पहले एक Hachoir parser लिखता हूं)। ऐसा लगता है कि परियोजना अब तक बहुत अधिक निष्क्रिय है, हालांकि।


(लिंक टूट गया है)
याकूब

1

मेरी परियोजना icebuddha.com ब्राउज़र में प्रारूप का वर्णन करने के लिए अजगर का उपयोग करके इसका समर्थन करती है।


0

इसी तरह के प्रश्न के लिए मेरे उत्तर की एक cut'n'paste:

एक उपकरण WinOLS है , जिसे वाहन इंजन प्रबंधन कंप्यूटर बाइनरी छवियों की व्याख्या और संपादन के लिए डिज़ाइन किया गया है (ज्यादातर उनके लुकअप टेबल में संख्यात्मक डेटा)। इसमें विभिन्न एंडियन प्रारूपों (हालांकि पीडीपी, मुझे नहीं लगता) के लिए समर्थन है और विभिन्न चौड़ाई और ऑफसेट पर डेटा देखना, सरणी क्षेत्रों (नक्शे) को परिभाषित करना और उन्हें सभी प्रकार के स्केलिंग और ऑफ़सेट विकल्पों के साथ 2 डी या 3 डी में विज़ुअलाइज़ करना है। इसमें एक हेयुरिस्टिक / सांख्यिकीय स्वचालित मानचित्र खोजक भी है, जो आपके लिए काम कर सकता है।

यह एक वाणिज्यिक उपकरण है, लेकिन मुफ्त डेमो आपको सब कुछ करने देगा लेकिन बाइनरी में परिवर्तन को बचाएंगे और इंजन प्रबंधन सुविधाओं का उपयोग करें जिनकी आपको आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.