Dogbolt डीकंपाइलर एक्सप्लोरर
(dogbolt.org)- Dogbolt एक Decompiler Explorer है, जहाँ binary अपलोड करके कई decompiler results को एक ही जगह पर तुलना की जा सकती है
- अपलोड की गई फ़ाइल 2MB से कम होने की सीमा के अधीन है, और यह भी बताया गया है कि अपलोड की गई binaries को संग्रहित किया जाता है
- फ़ाइल सीधे अपलोड किए बिना भी इसके काम करने का तरीका देखने के लिए sample उपलब्ध हैं
- जुड़े हुए टूल्स में angr, BinaryNinja, Boomerang, dewolf, Ghidra, Hex-Rays, RetDec, Snowman आदि शामिल हैं
- हर टूल का नाम उसके website या repository से लिंक है, इसलिए तुलना परिणाम देखते समय टूल की जानकारी तुरंत देखी जा सकती है
Binary अपलोड की शर्तें
- Dogbolt उपयोगकर्ता को binary फ़ाइल अपलोड करके decompilation results देखने की प्रक्रिया देता है
- फ़ाइल का आकार 2MB से कम होना चाहिए
- अपलोड की गई binaries संग्रहित की जाती हैं, ऐसा नोटिस और FAQ लिंक साथ में दिखाया जाता है
Sample से पहले जाँच संभव
- फ़ाइल सीधे अपलोड किए बिना देखने के लिए sample की सूची उपलब्ध है
- sample इस तरह बनाए गए हैं कि कई decompiler results को साथ-साथ देखा जा सके
1 टिप्पणियां
Hacker News की राय
अपलोड करने वाले से कहना चाहता हूँ कि इस हफ्ते तक इंतज़ार करने के लिए शुक्रिया। शायद हाल ही के C++ Weekly में इसे कवर किए जाने का असर है, और यह अच्छा मटेरियल है: https://www.youtube.com/watch?v=h3F0Fw0R7ME
पिछले हफ्ते तक performance issues काफ़ी गंभीर थे, लेकिन अब queue(https://dogbolt.org/queue) कुल मिलाकर ठीक लग रही है। कुछ decompilers में अटके लंबे bottleneck को छोड़ दें तो यह काफ़ी smoothly चल रहा है, और Josh और Glenn ने इसे शानदार तरीके से बेहतर किया है: https://github.com/decompiler-explorer/decompiler-explorer/c...
संबंधित लेख: Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - जुलाई 2022, 82 comments
PhD research के दौरान, खासकर obfuscated code के लिए deep learning पर काम करते समय, इसकी सच में बहुत ज़रूरत पड़ती
experiments की शुरुआत में Ghidra multiprocessing के साथ ठीक से नहीं चल रहा था और process करने के लिए data बहुत था, इसलिए मैंने angr पर switch कर लिया। शायद Ghidra से भी हो सकता था, लेकिन वही काम angr से करना कहीं ज़्यादा आसान था। नाम भी पसंद आया। हालांकि यह बताना चाहूँगा कि Compiler Explorer project का नाम है और Godbolt author का surname है, लेकिन अगर हम पहले ही Godbolt को verb की तरह इस्तेमाल करने लगे हैं, तो लगता है नाव निकल चुकी है
अलग-अलग intermediate representations (IR) में binary lifting explore करने के लिए ऐसा ही कोई tool हो तो अच्छा होगा। जैसे Ghidra p-code और sleigh, LLVM Machine IR, Qemu TCG वगैरह
Binary Ninja जिस कई-स्तरीय intermediate language सेट पर आधारित है, वह BNIL भी रोचक हो सकता है। cloud.binary.ninja UI या demo में उसका exposed form देखा जा सकता है
decompiler की बात चली है तो, सोच रहा हूँ कि Binary Ninja चुनना safe choice होगा या नहीं। सुना है IDA standard है, लेकिन hobby reverse engineering करने वालों के लिए यह महंगा भी है
निजी तौर पर Binja की सबसे बड़ी ताकत intermediate language (IL) है। High-level IL decompiler की तरह काम करता है, लेकिन assembly और source के बीच के चरण के रूप में low-level और medium-level IL भी मिलते हैं। अगर decompiler output थोड़ा अजीब लगे, तो IL देखकर ज़्यादा अच्छी तरह समझा जा सकता है कि क्या हो रहा है, और IL खुद भी pure assembly से कहीं ज़्यादा readable है, इसलिए अक्सर इस्तेमाल में आता है। दूसरे platforms पर इसके बराबर की functionality लगभग नहीं है। Ghidra और IDA में भी अपनी-अपनी एक IL है, लेकिन Binja की human-readable IL के मुकाबले वे machine-readable की तरफ़ ज़्यादा लगती हैं
जो नहीं है वह Python scripting है, और यह काफ़ी बड़ा अंतर है। फिर भी free tool के लिए शिकायत करना मुश्किल है। IDA और Ghidra की strengths और weaknesses, और community plugins अलग-अलग हैं, इसलिए संभव है कि दोनों इस्तेमाल करना बेहतर रहे
बहुत बढ़िया। हाल में emulator project करते हुए मैं अपना disassembler implement कर रहा हूँ, और लगातार सोचता रहता हूँ कि machine code patterns को generalized form में बदलने के बाद उन्हें C जैसे pseudocode में कैसे convert किया जाए
इसलिए इन दिनों खुद एक toy decompiler बनाने का मन बहुत ज़ोर से हो रहा है
[1] https://docs.binary.ninja/dev/bnil-overview.html
[2] https://riverloopsecurity.com/blog/2019/05/pcode/ उदाहरण
क्या non-experts के लिए देखने लायक कोई अच्छा और detailed decompiler tutorial है?
dogbolt का output godbolt में डालकर देख सकते हैं
इसे देखकर लगता है कि दूसरी companies को मनाने की बहुत ज़रूरत भी नहीं पड़ी होगी। उन्होंने समझ लिया होगा कि छोटा binary size और competitors से comparison ज़्यादा business ला सकता है
services के बीच problems को classify करने और solutions compare करने के लिए यह एकदम सही छोटा solution लगता है
cost खास सस्ती नहीं है। decompilers चलाने में काफ़ी compute resources लगते हैं, और खासकर कुछ decompilers को efficient कहना मुश्किल है
काश पिछले साल जब यह आया था तब देखा होता। सच में शानदार और बहुत convenient है