सभी के लिए Reverse Engineering
(0xinfection.github.io)- Reverse Engineering For Everyone ट्यूटोरियल्स का एक संग्रह है, जिसे इस तरह बनाया गया है कि reverse engineering पहली बार सीखने वाला व्यक्ति concepts और hands-on flow को आसानी से follow कर सके
- reverse engineering वह प्रक्रिया है जिसमें किसी artifact को खोलकर उसकी design, architecture, code या ज्ञान को उजागर किया जाता है
- curriculum में x86, x64, ARM-32, ARM-64 शामिल हैं, और यह शुरुआती पाठकों के साथ-साथ उन लोगों के लिए भी है जो concepts को फिर से देखना चाहते हैं
- इसे इस तरह व्यवस्थित किया गया है कि कोई व्यक्ति बिल्कुल शून्य ज्ञान से शुरू करके reverse engineering की मध्य-स्तरीय बुनियाद तक चरणबद्ध तरीके से सीख सके
- पूरा ट्यूटोरियल PDF और MOBI में डाउनलोड किया जा सकता है, और नए ट्यूटोरियल जुड़ने पर ebook version भी अपने आप update हो जाता है
Reverse Engineering का लक्ष्य
- reverse engineering को backwards engineering या back engineering भी कहा जाता है
- यह target artifact को खोलकर उसके भीतर की design, architecture, code को सामने लाने या उससे ज्ञान निकालने की प्रक्रिया है
- यह वैज्ञानिक research से मिलता-जुलता है, लेकिन अंतर यह है कि scientific research प्राकृतिक घटनाओं को विषय बनाती है
- यह ट्यूटोरियल संग्रह reverse engineering को जितना संभव हो उतना सरल तरीके से सिखाने पर केंद्रित है
Curriculum और लक्षित पाठक
- इसमें शामिल मुख्य courses इस प्रकार हैं
- यह उन beginners के लिए है जो reversing सीखना चाहते हैं, और उन पाठकों के लिए भी जो पहले से सीखे हुए concepts को revise करना चाहते हैं
- beginner बिना किसी बुनियादी knowledge के शुरू करके reverse engineering की मध्य-स्तरीय बुनियाद तक सीख सकता है
- sidebar के ज़रिए अब तक कवर किए गए sections देखे जा सकते हैं और ज़रूरी concepts को revise किया जा सकता है
1 टिप्पणियां
Hacker News की राय
रिवर्स इंजीनियरिंग लक्ष्य को सीधे अंदर से देखे बिना भी की जा सकती है
Andrew Tridgell ने “French cafe technique” के ज़रिए Microsoft के SMB protocol को reverse engineer करने की प्रक्रिया समझाई थी: https://www.samba.org/ftp/tridge/misc/french_cafe.txt
Tridge ने मालिकाना सॉफ्टवेयर BitKeeper को भी reverse engineer किया था, जिसका Linus ने कुछ समय तक Linux kernel development hosting के लिए इस्तेमाल किया था। उन्होंने पता लगाया कि dedicated client के बजाय BitKeeper address:port पर telnet से connect करने पर
helpटाइप किया जा सकता है, और फिर आज़माने लायक commands की सूची output होती हैउन commands से repository query करने पर proprietary software इस्तेमाल किए बिना या disassemble किए बिना सभी internal data structures समझे जा सकते थे। इसी reverse engineering की वजह से BitKeeper के मालिक Larry McVoy ने Linux community का इस्तेमाल करने का अधिकार वापस ले लिया, और फिर Linus ने git बनाया
helpका command list output करना BitKeeper developers का अच्छा engineering/UI decision था, लेकिन डर है कि इससे मिलने वाला सबक कहीं “software को बहुत friendly मत बनाओ” न बन जाएऔर network के ज़रिए किसी software से बात करना भी साफ तौर पर उस software को “use” करना ही लगता है
मैंने कभी नहीं सोचा कि reverse engineering किताबों से सीखी जाने वाली field है। बचपन से सब कुछ खुद करके सीखा
Cheat Engine से videogame process memory scan और modify करना, MMO packets पढ़कर resend करके cheat की कोशिश करना, DLL और hooks बनाकर process में inject करना, crackme challenges हल करने के लिए executable patches बनाना सीखा
license key मांगने वाले real software से छेड़छाड़ करके उसे key के बिना चलाना या कोई भी key accept करवाना, game save files जैसे binary formats analyze करके cheats में इस्तेमाल करना—और आखिरकार इन्हीं skills और knowledge से असली नौकरी मिली और पैसे कमाए
असल में यह वैसी चीज़ है जिसमें बस खुद कोशिश करनी होती है और समय लगाना होता है। मूल tutorial बहुत टुकड़ों-टुकड़ों में है, बहुत कुछ cover करने की कोशिश करता है, फिर भी कुछ घंटे हाथ लगाने पर जो सीखा जा सकता है उससे आगे की reverse engineering skills सिखाता हुआ नहीं लगता
इसके उलट beginners.re बहुत बड़ा है, लेकिन कहीं ज्यादा गहरा और step-by-step है, और practice tasks के लिए crackmes बेहतर हो सकते हैं
एक ongoing videogame reverse engineering project में मेरी मुलाकात एक self-taught modder से हुई जिसे programming नहीं आती थी। Discord calls में कुछ बार साथ बैठकर Ghidra project देखते हुए मैंने उसे computer program engineering की basics समझाईं, तो उसने Cheat Engine से bits flip करने वाले समय की तुलना में बहुत ज्यादा सीखा
उसके बाद उसने 15 साल पुराने YouTube video में ही दिखाए गए, लेकिन कभी distribute न किए गए, काफी ambitious mod को recreate किया। मैंने दिशा जरूर दी, लेकिन parts कैसे जुड़ते हैं यह देखने के बाद उसने sequel में भी वही mod अकेले implement कर लिया
engineering experience reverse engineering करते समय perspective देता है
यह भी अहम है कि किताबें बहुत हैं, लेकिन “अच्छी” किताबें गिनी-चुनी हैं
5 मिनट पढ़ते ही इतनी सारी errors, गलत समझे गए concepts और पूरी तरह गलत explanations दिखीं कि recommend करना मुश्किल है। साफ लगता है कि यह किसी ऐसे amateur ने लिखा है जिसे इस field का experience कम है
बेहतर resources में Eldad Eilam की Secrets of Reverse Engineering, Windows side के लिए Practical Reverse Engineering, और बिल्कुल basics के लिए Patterson की Computer Organization and Design हैं
इस topic से पहली बार परिचित होने वालों के लिए यह एक ठीक-ठाक high-level overview जैसा लगता है
ज्यादा deep resources के लिए यह link भी था: https://github.com/mytechnotalent/Reverse-Engineering
edit: अरे, लगता है ज्यादातर फिर original पर ही link करते हैं
searchlores.org और fravia.com पर reversing tutorials पढ़ने की याद आ गई
अब वे web archive में हैं: https://web.archive.org/web/20191201105759/http://search.lor...
Java reverse engineering भी मजेदार है। खासकर वे संदिग्ध Android apps जो अजीब Bluetooth protocol से home appliances control करते हैं
इस guide को लिखने वाले व्यक्ति को मैं जानता हूं। HN पर इसे देखना अच्छा लगा, और अगर कोई specific feedback हो तो मैं पहुंचा सकता हूं
participation बढ़ाने वाले elements और visuals बहुत कम हैं। explanations ही explanations हैं और text walls बहुत ज्यादा हैं, इसलिए सिर्फ इसी वजह से यह “everyone के लिए” material नहीं है
उदाहरण के लिए part 2 में static analysis/dynamic analysis की explanation, IDA और disassembler introduction, और ABC Biochemicals scenario की explanation कहीं ज्यादा संक्षिप्त लिखी जा सकती है
“malware analysis में static analysis और dynamic analysis दो basic techniques होती हैं। static analysis executable को चलाए बिना inspect करता है, इसे यहां cover नहीं किया जाएगा और आगे के course में लिया जाएगा। dynamic analysis running malware binary को disassembler और debugger से analyze करता है। disassembler executable binary को assembly language instructions में बदलता है जिन्हें debug और manipulate किया जा सकता है। Hopper, OllyDbg, IDA जैसे tools हैं, और IDA कई platforms और processors support करने वाला popular disassembler और debugger है। reverse engineering malware analysis से कहीं व्यापक field है। अंत में ABC Biochemicals नाम की एक काल्पनिक sensitive biochemical lab में bulletproof door control system को ethically hack करने वाले scenario में IDA इस्तेमाल किया जाएगा। यह basic project है, लेकिन black-box binary को reverse engineer करने और ज्यादा secure code design solution खोजने की प्रक्रिया दिखाता है। अगली class में कई malware types cover किए जाएंगे” इतना कर सकते हैं
किताब का link मेरे लिए नहीं खुल रहा; क्या इस पर HN traffic bomb गिरा है?