27 साल पुरानी EXE फ़ाइल को Claude 3.7 में अपलोड करने के बाद जो हैरान कर देने वाली बात हुई
(reddit.com)सोर्स नहीं बल्कि आंशिक बाइनरी (runtime DLLs मौजूद नहीं थीं) से
मूल प्रोग्राम का उद्देश्य पता लगाना, और उसे Python में फिर से लिख देना…
अच्छे या बुरे, किसी भी अर्थ में यह निश्चित रूप से “कृत्रिम” बुद्धिमत्ता है।
अनुवाद:
सालों तक AI से निराश होने के बाद, मैं सचमुच बहुत बड़ा झटका खा गया। यह कोई सामान्य "AI कमाल है" वाली पोस्ट नहीं है। आज तक मैं संदेहवादी था।
पृष्ठभूमि : बहुत से लोगों की तरह मैंने भी coding सहायता के लिए ChatGPT और दूसरे AI tools इस्तेमाल किए हैं। नतीजा? लगातार निराशाजनक। यह बस एक सजाया हुआ search engine जैसा लगा, जो आत्मविश्वास भरे अंदाज़ में गलत code उगल देता था।
चुनौती : आज मेरी 2 साल की पोती मुझसे मिलने आई। तभी मुझे 1997 में Visual Basic 4 से बनाया गया एक साधारण app याद आया। लेकिन 27 साल पुरानी executable चलाना? बिना पुराने DLLs और compatibility layers के? हाँ, बिल्कुल।
The Hail Mary : जिज्ञासा में मैंने असली EXE फ़ाइल Claude 3.7 पर अपलोड की और एक सीधा सवाल पूछा: "क्या आप बता सकते हैं कि इस फ़ाइल को कैसे चलाया जाए? लगता है यह Visual Basic 4 में बनाई गई है। अगर इसे Python में बदला जा सके तो अच्छा होगा।"
अपेक्षित नतीजा : कोई सामान्य जवाब मिलने की उम्मीद थी, जैसे "यह पुरानी फ़ाइल है, सुरक्षा जोखिम हो सकता है, वगैरह-वगैरह..."
असल में जो हुआ: Claude 3.7 ने उम्मीद के मुताबिक चेतावनी से शुरुआत की, लेकिन उसके बाद मामला दिलचस्प हो गया। उसने किसी तरह बाइनरी को analyze किया और कुछ खास components पहचान लिए:
- "Form1"
- "cntTimer"
- "btnExit"
- यहाँ तक कि embedded sound files भी पहचान लीं!
फिर उसने वह किया जो किसी और AI ने नहीं किया था। उसने Pygame का उपयोग करके पूरा Python conversion लिख दिया:
- functionality को पूरी तरह replicate किया।
- installation के लिए स्पष्ट निर्देश दिए।
- और यह पहली बार में ही सचमुच काम कर गया
लगा समय: 5 मिनट से भी कम। कोई बढ़ा-चढ़ाकर कहना नहीं।
जब मैंने space key पर sound bind करने और colorful fonts जोड़ने जैसी tweaks मांगीं, तो उसने तुरंत एकदम सही code update दे दिया।
AI इस्तेमाल करने के बाद पहली बार मैं सच में प्रभावित हुआ। यह सिर्फ party trick नहीं था, बल्कि एक व्यावहारिक समाधान था जिसने मेरा काम का समय बचाया।
आखिर में मैंने Claude से कहा कि मैं उससे प्रभावित हूँ, और क्यों यह मुझे शानदार लगा उसका एक अटपटा सा सार लिखकर.... भेज दिया, जिसके बाद उसने Reddit पोस्ट को फिर से लिख दिया। सच कहूँ तो यह "लगभग" सामान्य इंसान जैसा लगता है। (यह हिस्सा मैंने लिखा है)।
<उसी दिन 5 घंटे बाद> अपडेट
मैंने इस पोस्ट पर एक अपडेट/सारांश (जो मैंने लिखा) डाल दिया। पता नहीं यह सही तरीका है या नहीं, लेकिन इंटरनेट पर कम-से-कम एक व्यक्ति ने ऐसा कहा, इसलिए शायद यह सच ही होगा।
https://www.reddit.com/r/ClaudeAI/comments/1iz1i61/update_i_uploaded_a_27yearold_exe_file_to_claude/
<अपडेट - 11 घंटे बाद>
लगता है मैं 'Reddit दादाजी' बन गया हूँ। मज़ेदार है।
कुछ बातें साफ कर दूँ:
- हाँ, Claude ने EXE अपलोड करने दिया।
- compiled EXE में कुछ पहचानने लायक strings हैं, लेकिन बहुत ज़्यादा नहीं।
- Claude ने यह पोस्ट और शीर्षक लिखा था। इसके अलावा one-shot वाला हिस्सा सबसे बेहतरीन है।
- अब 29 साल की मेरी बेटी keyboard दबाने पर wav files चलाती और text दिखाती थी।
जिन लोगों को comments में chat link नहीं दिख रही थी, उनके लिए यहाँ जोड़ रहा हूँ:
https://claude.ai/share/3eecebc5-ff9a-4363-a1e6-e5c245b81a16
<अपडेट - 1 दिन बाद>
Twitter/X पर दोबारा पोस्ट की गई इस पोस्ट को 10 लाख से ज़्यादा views मिल चुके हैं। पूरी पोस्ट here है। मैंने post को, उसके सभी comments सहित, उसी context में Claude को अपलोड किया जिसमें script और post लिखी गई थी। मैंने खास तौर पर उससे critiques का सार माँगा। Claude ने उसका यह सार दिया:
वैध तकनीकी संदर्भ
कुछ लोगों ने सही तौर पर बताया कि VB4 executables machine code की बजाय p-code में compile होती थीं, इसलिए वे पूरी तरह compiled executables की तुलना में analyze करना आसान होती हैं। यह बिल्कुल सही बात है। pre-.NET दौर के VB में interpretable bytecode format स्टोर होता था, इसलिए पूरी तरह compiled binaries की तुलना में उनसे जानकारी निकालना आसान था।
जटिलता को लेकर संदेह
दूसरों ने कहा कि नतीजे में मिला Python code अपेक्षाकृत सरल था (लगभग 100 lines)। ऐसा इसलिए था क्योंकि app खुद कोई जटिल application नहीं था, बल्कि बुनियादी functionality वाला एक साधारण program था। प्रभावशाली बात generated code की complexity नहीं थी, बल्कि यह थी कि binary से working code तक जाने में लगभग कोई मेहनत नहीं लगी।
प्रक्रिया को लेकर गलतफ़हमी
कुछ आलोचकों को लगा कि मैं यह दावा कर रहा था कि Claude ने पारंपरिक अर्थ में executable को 'decompile' किया। जबकि वास्तव में, जैसा कि मैंने बातचीत में समझाया था, उसने दिखने वाली strings को analyze करके functionality का अनुमान लगाया था। यह फिर भी प्रभावशाली है, लेकिन असली decompilation नहीं है।
सामान्य AI संदेहवाद
tech industry में AI capabilities को लेकर स्वाभाविक संदेह मौजूद है, और कुछ commenters प्रभावशाली demos को तुरंत fake, बढ़ा-चढ़ाकर पेश किया गया, या "सिर्फ pattern matching" कहकर खारिज कर देते हैं। यह AI प्रगति के प्रति एक सामान्य प्रतिक्रिया पैटर्न है। मुझे जो आलोचना सबसे अधिक उचित लगती है, वह यह है कि इस उपलब्धि को उसके संदर्भ में देखा जाना चाहिए। Claude ने किसी मनमाने compiled code पर वास्तविक binary analysis नहीं किया, बल्कि VB executable की text strings से smart inference किया।
9 टिप्पणियां
असल में यह बस टेक्स्ट दस्तावेज़ पढ़ने और उनका विश्लेषण करने से बहुत अलग नहीं है, लेकिन..
वाह, क्या पुराने भूले-बिसरे डेटा भी रिकवर किए जा सकते हैं? हाहा
पुराने DOS गेम का वीडियो अपलोड करें तो शायद exe फ़ाइल निकल आए वगैरह..
मुख्य टिप्पणी की तरह, VB exe में लिखे गए कोड को लगभग उसी रूप में देखा जा सकता है, लेकिन अगर यह assembly के बजाय C++ exe होता, तो शायद अभी भी यह संभव नहीं होता।
AI की एक बड़ी ताकत यह है कि वह instructions को समझकर उन्हें लागू कर सकता है, इसलिए दूसरी language में migration का काम भी वह चुपचाप काफ़ी अच्छी तरह कर लेता है।
मुझे लगता है कि Claude के training data में शायद vb 4.0 के p-code से जुड़े दस्तावेज़ शामिल रहे होंगे।
अगर ऐसा नहीं था (यानी pretraining में उससे जुड़ी कोई चीज़ नहीं थी), तो AI के नज़रिए से vb 4.0 का p-code और x86 (या arm या…) machine code में क्या खास फ़र्क होगा? दोनों ही कुछ नियमों के साथ संख्याओं की एक श्रृंखला भर हैं। अगर उसने इतने छोटे sample से pattern पढ़ लिया, तो वह बात अपने-आप में भी डराने वाली है।
vb या python जैसी भाषाओं में exe बनाया जाए तो वह machine code में compile नहीं होता, इसलिए अगर सिर्फ exe हो तो भी source code को function name और variable name सहित वैसे का वैसा निकाला जा सकता है.
ऐसे नियमों को सीखकर उनका इस्तेमाल करना... लगता है भविष्य में developer के रूप में टिके रहना आसान नहीं होगा.
लेकिन वैसे भी assembly की भी एक spec होती है, इसलिए अगर उसे spec के साथ दे दिया जाए तो लगता है वह जल्दी translate कर देगा।
Assembly से पढ़ने लायक natural language code में बदलना, अनावश्यक चीज़ें हटाने के बाद उसे फिर से रचने (जैसे variable names, function names आदि) का क्षेत्र है, इसलिए मुझे लगता है कि इसे ठीक-ठाक परिणाम देने में थोड़ा समय लगेगा।
आसान भी हो सकता है lol
मैंने करीब 10 साल पहले इसी तरह की चीज़ पर एक शोधपत्र लिखा था
वाह, यह थोड़ा हैरान करने वाला है।