LLM4Decompile: LLM के साथ बाइनरी कोड का डी-कम्पाइलेशन

मॉडल प्रदर्शन और प्रशिक्षण

  • बताया गया है कि छोटा 6B मॉडल 33B मॉडल से बेहतर प्रदर्शन करता है; टिप्पणीकार इसे बड़े मॉडलों के अपर्याप्त प्रशिक्षण और डेटा गुणवत्ता, LR शेड्यूल आदि के प्रति संवेदनशीलता से जोड़ते हैं।
  • डी-कम्पाइलर मॉडल को DeepSeek-Coder से fine-tune किया गया है; केवल लगभग 4B टोकन उपलब्ध होने के कारण, जबकि सामान्य LLMs के लिए ट्रिलियनों टोकन होते हैं, शुरुआत से प्रशिक्षण को अव्यावहारिक माना जाता है।
  • अनुमानित हार्डवेयर आवश्यकताएँ: 1B parameters के लिए ~2GB VRAM, 7B के लिए ~14GB, 33B के लिए ~80GB।

GPT‑4 और अन्य LLMs से तुलना

  • GPT‑4 डी-कम्पाइलेशन में, बिना किसी task-specific training के, आश्चर्यजनक रूप से अच्छा प्रदर्शन करता है।
  • यह विशेष मॉडल की तुलना में अधिक बार syntactically valid (recompilable) C बनाता है, लेकिन semantic correctness (re-executability) में कमजोर है।
  • लोग JavaScript के deobfuscation और code beautifying के लिए GPT‑4/3.5 का उपयोग करने की भी रिपोर्ट करते हैं, जिसमें आंशिक लेकिन पूर्ण नहीं सफलता मिलती है।

पारंपरिक decompilers और reverse engineering से संबंध

  • कई लोग नोट करते हैं कि आधुनिक native-code decompilers (IDA, Ghidra, Binja, rev.ng, आदि) मजबूत baselines हैं और उन्हें benchmarks का हिस्सा होना चाहिए, जिसमें gotos, cyclomatic complexity, और graph-edit distance जैसे पहले के metrics का उपयोग किया जाए।
  • कुछ practitioners का तर्क है कि complex binaries का decompilation, खासकर hand-written assembly या भारी optimization वाले code का, संभवतः पूरी तरह automatic नहीं हो सकता; tools मुख्यतः expert effort को amplify करते हैं।
  • अन्य लोग बताते हैं कि compiler diversity, non-determinism, और binaries तथा source code के बीच bijection की कमी कठिन सीमाएँ हैं; exact round-tripping अक्सर असंभव होता है।

मूल्यांकन, correctness, और “hallucinations”

  • प्रोजेक्ट वर्तमान में यह मापता है:
    • Re-compilability: क्या generated C compile होता है?
    • Re-executability: क्या recompiled binary test cases पास करता है?
  • Re-executability rates कम हैं (≈10–15%), भले ही recompilability काफ़ी अधिक हो, जो semantic gaps को उजागर करता है।
  • इस पर बहस है कि round-tripping या identical binaries एक यथार्थवादी metric है या नहीं; कई लोग test quality और fuzzing को अधिक व्यावहारिक checks मानते हैं।
  • कुछ लोग formal verification का प्रस्ताव रखते हैं: LLM code के साथ एक proof आउटपुट करे; एक non-LLM verifier equivalence की जाँच करे। अन्य लोग feasibility और undecidability सीमाओं पर सवाल उठाते हैं।

उपयोग, दायरा, और भविष्य की दिशाएँ

  • सुझाए गए उपयोग: reverse engineering में सहायता, security analysis, malware और obfuscated JS analysis, toolchain detection, intermediate representations (जैसे RzIL) में lifting, और author attribution experiments।
  • कई लोगों की राय है कि LLMs को standalone decompilers के बजाय मौजूदा disassemblers/IRs के ऊपर “copilots” की तरह उपयोग किया जाएगा।
  • open-source C (और संभवतः synthetic code) से dataset generation को इस शोध दिशा का एक प्रमुख लाभ माना जाता है।