2 पॉइंट द्वारा GN⁺ 2023-12-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 को साथ-साथ देखा जा सके

जुड़े हुए decompiler टूल्स

1 टिप्पणियां

 
GN⁺ 2023-12-05
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 की तरह इस्तेमाल करने लगे हैं, तो लगता है नाव निकल चुकी है

    • पता है। उसी तरह GitHub repository भी असल में Decompiler Explorer है: https://github.com/decompiler-explorer/decompiler-explorer/
    • जानना चाहूँगा कि machine learning techniques से machine code deobfuscation या decompilation में कोई अच्छी progress हुई है या नहीं
  • अलग-अलग intermediate representations (IR) में binary lifting explore करने के लिए ऐसा ही कोई tool हो तो अच्छा होगा। जैसे Ghidra p-code और sleigh, LLVM Machine IR, Qemu TCG वगैरह

    • जब पूरे binary से शुरुआत करते हैं, तो intermediate representations आम तौर पर इंसानों के छोटे हिस्से देखने के लिए उपयुक्त नहीं होते। शायद यह तरीका सिर्फ बहुत छोटे assembly snippets के लिए ही ठीक बैठेगा
      Binary Ninja जिस कई-स्तरीय intermediate language सेट पर आधारित है, वह BNIL भी रोचक हो सकता है। cloud.binary.ninja UI या demo में उसका exposed form देखा जा सकता है
    • Qemu binaries को intermediate representation में translate करता है और फिर उसी पर काम करता है। Valgrind भी ऐसा ही करता है, और Facebook से जुड़ा bolt नाम का optimization tool भी यही idea इस्तेमाल करता है
  • decompiler की बात चली है तो, सोच रहा हूँ कि Binary Ninja चुनना safe choice होगा या नहीं। सुना है IDA standard है, लेकिन hobby reverse engineering करने वालों के लिए यह महंगा भी है

    • Binja decompiler कुल मिलाकर ठीक है। IDA या Ghidra जितना mature नहीं है, लेकिन खराब decompiler नहीं है
      निजी तौर पर 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 की तरफ़ ज़्यादा लगती हैं
    • आजकल IDA Free में, अगर आप सिर्फ Windows/Linux के x86_64 पर काम कर रहे हैं, तो Pro की लगभग सारी functionality मौजूद है: https://hex-rays.com/ida-free/
      जो नहीं है वह Python scripting है, और यह काफ़ी बड़ा अंतर है। फिर भी free tool के लिए शिकायत करना मुश्किल है। IDA और Ghidra की strengths और weaknesses, और community plugins अलग-अलग हैं, इसलिए संभव है कि दोनों इस्तेमाल करना बेहतर रहे
    • ईमानदारी से कहूँ तो बस Ghidra इस्तेमाल करो। इसकी अपनी quirks हैं, लेकिन यह काफ़ी अच्छा और open source है। अगर यह NSA के इस्तेमाल के लिए पर्याप्त है, तो hobby use के लिए भी शायद पर्याप्त होगा
  • बहुत बढ़िया। हाल में emulator project करते हुए मैं अपना disassembler implement कर रहा हूँ, और लगातार सोचता रहता हूँ कि machine code patterns को generalized form में बदलने के बाद उन्हें C जैसे pseudocode में कैसे convert किया जाए
    इसलिए इन दिनों खुद एक toy decompiler बनाने का मन बहुत ज़ोर से हो रहा है

    • Binary Ninja ऐसा काम करता है। यह intermediate representation की कई layers रखता है[1], और उनके ऊपर compiler build करता है। Ghidra भी PCode के साथ कुछ इसी तरह काम करता है: पहले PCode में disassemble करता है, फिर PCode को decompile करता है[2]
      [1] https://docs.binary.ninja/dev/bnil-overview.html
      [2] https://riverloopsecurity.com/blog/2019/05/pcode/ उदाहरण
  • क्या non-experts के लिए देखने लायक कोई अच्छा और detailed decompiler tutorial है?

    • demand तो दिख रही है। क्या कोई reference के लिए दिशा बता सकता है?
  • dogbolt का output godbolt में डालकर देख सकते हैं

    • यह machine code के लिए machine translation है। theoretically इसे fixed point तक पहुँचना चाहिए
    • LLM को reinforcement learning से original code restore करना भी सिखाया जा सकता है
  • इसे देखकर लगता है कि दूसरी companies को मनाने की बहुत ज़रूरत भी नहीं पड़ी होगी। उन्होंने समझ लिया होगा कि छोटा binary size और competitors से comparison ज़्यादा business ला सकता है
    services के बीच problems को classify करने और solutions compare करने के लिए यह एकदम सही छोटा solution लगता है

    • वास्तव में logic यही था। इसमें शामिल दो बड़े commercial solutions, Binary Ninja और Hex-Rays, hosting cost पूरी तरह उठा रहे हैं। वैसे मैं Binary Ninja बनाने वाली Vector 35 का co-founder हूँ
      cost खास सस्ती नहीं है। decompilers चलाने में काफ़ी compute resources लगते हैं, और खासकर कुछ decompilers को efficient कहना मुश्किल है
  • काश पिछले साल जब यह आया था तब देखा होता। सच में शानदार और बहुत convenient है