Reversers के लिए x86/x64 Assembly Essentials
MOV, CMP, JNE, CALL और RET पढ़िए तथा registers और stack में data flow का अनुसरण कीजिए।
Reversers के लिए x86/x64 Assembly Essentials, CoddyKit पर Cyber Security Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Cyber Security Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Cyber Security Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
रिवर्स इंजीनियरों के लिए असेंबली क्यों?
Ghidra का डीकंपाइलर उपयोगी है, लेकिन अपूर्ण है — यह कुछ संरचनाओं को छोड़ देता है, प्रकारों का गलत अनुमान लगाता है और ऑब्फ़स्केट किए गए कोड को डीकंपाइल नहीं कर सकता। सीधे असेंबली पढ़ने से वास्तविक स्थिति का पता चलता है। रिवर्स इंजीनियर को असेंबली लिखने के बजाय उसे पढ़ना आवश्यक है।
रजिस्टर
x86-64 के मुख्य रजिस्टर:
- RAX — संचायक, रिटर्न मान
- RBX, RCX, RDX — सामान्य प्रयोजन
- RSI, RDI — स्रोत/गंतव्य अनुक्रमणिका, फ़ंक्शन के पहले/दूसरे तर्क
- RSP — स्टैक पॉइंटर
- RBP — बेस पॉइंटर (स्टैक फ़्रेम)
- RIP — निर्देश पॉइंटर
फ़ंक्शन कॉल कन्वेंशन (x64 Linux)
तर्क रजिस्टर में भेजे जाते हैं (System V AMD64 ABI):
- RDI
- RSI
- RDX
- RCX
- R8
- R9
रिटर्न मान RAX में होता है। अतिरिक्त तर्क स्टैक पर पुश किए जाते हैं।
ज़रूरी निर्देश
पहचानने योग्य मुख्य निर्देश:
mov rax, rbx ; copy rbx to rax
push rax ; push rax onto stack
pop rbx ; pop top of stack into rbx
add rax, 8 ; rax = rax + 8
sub rsp, 0x20 ; allocate 32 bytes on stack
call 0x401234 ; call function at address
ret ; return to caller
lea rax, [rbp-0x10] ; load address of local varसशर्त जंप
तुलनाएँ और शाखाएँ:
cmp rax, 0 ; set flags based on rax - 0
test rax, rax ; test rax & rax (check if zero)
jz 0x401234 ; jump if zero
jnz 0x401234 ; jump if not zero
jl 0x401234 ; jump if less (signed)
jge 0x401234 ; jump if >= (signed)
je 0x401234 ; jump if equalएक सरल फ़ंक्शन पढ़ना
सामान्य पैटर्न पहचानना:
; if (x == 0) return 1;
mov eax, [rbp-4] ; load x
test eax, eax ; x == 0?
jnz .notZero ; if not zero, skip
mov eax, 1 ; return value = 1
ret
.notZero:
...स्ट्रिंग संचालन की पहचान करना
सामान्य स्ट्रिंग/मेमोरी संचालन:
; memcpy(dest, src, n):
; rdi=dest, rsi=src, rdx=n
rep movsb ; copy RCX bytes from RSI to RDI
; strlen-like loop:
.loop:
cmp byte [rsi], 0 ; check for null terminator
je .done
inc rsi
jmp .loopस्टैक फ़्रेम की स्थापना/समापन
हर फ़ंक्शन की शुरुआत और समाप्ति इस प्रकार होती है:
; Prologue:
push rbp ; save caller frame
mov rbp, rsp ; set up new frame
sub rsp, 0x30 ; allocate local vars
; Epilogue:
leave ; mov rsp, rbp; pop rbp
retलूप की पहचान करना
डिसअसेंबली में लूप:
- पीछे की ओर जंप (कम पते की ओर) लूप का संकेत देता है
- रजिस्टर में मौजूद काउंटर को
dec/subसे घटाया जाता है loopनिर्देश RCX को घटाता है और शून्य न होने पर जंप करता है
स्विच स्टेटमेंट पढ़ना
स्विच स्टेटमेंट अक्सर जंप तालिकाओं में कंपाइल होते हैं:
; Jump table pattern:
cmp eax, 5 ; check if case > max
ja .default ; jump to default
lea rcx, [jump_table]
mov rax, [rcx + rax*8] ; index into table
jmp rax ; jump to case handlerSIMD और क्रिप्टो स्थिरांक
ऐसे संख्यात्मक स्थिरांक खोजें जो एल्गोरिदम की पहचान कराते हैं:
- AES S-box: पहले बाइट
63 7C 77 7B... - SHA-256 का प्रारंभिक हैश:
0x6a09e667, 0xbb67ae85... - MD5:
0xd76aa478
इन स्थिरांकों को पहचानने से क्रिप्टोग्राफ़िक फ़ंक्शन की तुरंत पहचान हो जाती है।
त्वरित जाँच: x64 असेंबली
x86-64 System V ABI में फ़ंक्शन कॉल का पहला तर्क किस रजिस्टर में होता है?
पाठ का पुनरावलोकन
x86-64 रिवर्सिंग के लिए मुख्य रजिस्टर (RAX, RDI, RSI, RSP, RIP), फ़ंक्शन कॉलिंग कन्वेंशन (तर्क RDI/RSI/RDX... में) और सामान्य पैटर्न (प्रोलॉग, लूप, तुलनाएँ, जंप तालिकाएँ) जानना आवश्यक है। आपको असेंबली लिखने की ज़रूरत नहीं है — केवल उसे पढ़ना है। कोड में मौजूद क्रिप्टो स्थिरांक बाइनरी चलाए बिना एल्गोरिदम की पहचान करा देते हैं।
एआई शिक्षक के साथ Cyber Security Academy सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 76
- पाठ
- 303
अक्सर पूछे जाने वाले प्रश्न
क्या “Reversers के लिए x86/x64 Assembly Essentials” पाठ निःशुल्क है?
हाँ — Cyber Security Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Reversers के लिए x86/x64 Assembly Essentials” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Cyber Security Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Reversers के लिए x86/x64 Assembly Essentials” में मैं क्या सीखूँगा?
MOV, CMP, JNE, CALL और RET पढ़िए तथा registers और stack में data flow का अनुसरण कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Cyber Security Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Cyber Security Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Cyber Security Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Reversers के लिए x86/x64 Assembly Essentials” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Cyber Security Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Cyber Security Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Ghidra: Binaries में नेविगेशन और Annotation
- Reversers के लिए x86/x64 Assembly Essentials
- GDB और pwndbg से Dynamic Analysis
- Deobfuscation और Anti-Analysis Tricks