6 पॉइंट द्वारा GN⁺ 2024-07-26 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 किया जा सकता है

उपलब्ध फ़ॉर्मैट

  • पूरा ट्यूटोरियल सेट ebook के रूप में उपलब्ध है
  • नए ट्यूटोरियल जुड़ने पर ebook version भी अपने आप update हो जाता है

1 टिप्पणियां

 
GN⁺ 2024-07-26
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 बनाया

    • Linus ने BitKeeper इस्तेमाल किया, इसे ज़रूरी नहीं कि “मूर्खता” कहा जाए। उस समय उपलब्ध tools में से उन्होंने सबसे बेहतर चुना था, और भले ही वह absolute best था या नहीं, Linus ने कई tools की समीक्षा और evaluation किया था
      help का command list output करना BitKeeper developers का अच्छा engineering/UI decision था, लेकिन डर है कि इससे मिलने वाला सबक कहीं “software को बहुत friendly मत बनाओ” न बन जाए
      और network के ज़रिए किसी software से बात करना भी साफ तौर पर उस software को “use” करना ही लगता है
    • Andrew ने हमें एक नहीं, दो बार बचाया। इससे दिखता है कि goal करने वाले लोग भी चाहिए, लेकिन निर्णायक pass देने वाले लोग भी चाहिए
    • undergraduate दिनों में department cafeteria में संयोग से मिले Tridge से BitKeeper/git story सीधे सुनना यादगार रहा
  • मैंने कभी नहीं सोचा कि 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 से असली नौकरी मिली और पैसे कमाए

    • मैंने भी बचपन में CE/IDA को बहुत लंबे समय तक घूरते हुए reverse engineering सीखी, इसलिए कोई पूछे कि कैसे सीखना अच्छा रहेगा, तो मेरे पास कोई खास अच्छा जवाब नहीं होता
      असल में यह वैसी चीज़ है जिसमें बस खुद कोशिश करनी होती है और समय लगाना होता है। मूल tutorial बहुत टुकड़ों-टुकड़ों में है, बहुत कुछ cover करने की कोशिश करता है, फिर भी कुछ घंटे हाथ लगाने पर जो सीखा जा सकता है उससे आगे की reverse engineering skills सिखाता हुआ नहीं लगता
      इसके उलट beginners.re बहुत बड़ा है, लेकिन कहीं ज्यादा गहरा और step-by-step है, और practice tasks के लिए crackmes बेहतर हो सकते हैं
    • सीधे reverse engineering में जाना भी संभव है, लेकिन formal education हो या self-study, engineering background न हो तो यह बहुत कठिन हो जाता है
      एक 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 देता है
    • structured learning और repeated exercises की ताकत को बहुत कम आंका जा रहा है। critical thinking, curiosity और passion सिखाना मुश्किल हो सकता है, लेकिन अच्छी तरह लिखी किताब trial-and-error में लगने वाला समय काफी हद तक reasonable level तक घटा सकती है
      यह भी अहम है कि किताबें बहुत हैं, लेकिन “अच्छी” किताबें गिनी-चुनी हैं
    • मैंने खाना बनाना भी कभी किताब देखकर सीखने वाली चीज़ नहीं माना
  • 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 हैं

    • Secrets of Reverse Engineering 2005 की किताब है; क्या हाल की किताबों में कोई recommend करने लायक है?
  • इस 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 करते हैं

    • काश Java के लिए भी DnSpyEx जैसा tool होता। Recaf4 तैयार होने का इंतज़ार कर रहा हूं
  • इस guide को लिखने वाले व्यक्ति को मैं जानता हूं। HN पर इसे देखना अच्छा लगा, और अगर कोई specific feedback हो तो मैं पहुंचा सकता हूं

  • participation बढ़ाने वाले elements और visuals बहुत कम हैं। explanations ही explanations हैं और text walls बहुत ज्यादा हैं, इसलिए सिर्फ इसी वजह से यह “everyone के लिए” material नहीं है

    • लिखने की तारीफ होनी चाहिए, लेकिन मुझे भी कुछ ऐसा ही लगा। sentences बहुत लंबे और verbose हैं, इसलिए पढ़ना मुश्किल है
      उदाहरण के लिए 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 गिरा है?