Practical Reverse Engineering: A Hands-On Starter Guide
ریورس انجینئرنگ کے بنیادی workflow کو سیکھیں، static analysis سے لے کر dynamic debugging تک، عملی ٹول کی تجاویز کے ساتھ۔
Reverse engineering وہ عمل ہے جس میں compiled software کو اس کی منطق، رویے، اور مقصد کو سمجھنے کے لیے علیحدہ کیا جاتا ہے، بغیر source code تک رسائی کے۔ چاہے آپ malware کو analyze کر رہے ہوں، بند source binaries کو audit کر رہے ہوں، یا CTF challenges کو مطالعہ کر رہے ہوں، ایک ہی بنیادی workflow لاگو ہوتا ہے: معلومات کو statically جمع کریں، پھر اپنی فرضیوں کو dynamically تصدیق دیں۔ یہ guide اس workflow کو عملی، ٹول سے آزاد مراحل کے ساتھ بیان کرتا ہے جو آپ فوری طور پر استعمال کر سکتے ہیں۔
محفوظ تجزیاتی ماحول کی ترتیب
کسی بھی نامعلوم binary کو چھونے سے پہلے، اپنے workspace کو الگ تھلگ کریں۔ ایک مختص virtual machine استعمال کریں جس کی host تک کوئی network رسائی نہ ہو، analysis سے پہلے اسے snapshot کریں، اور shared folders اور clipboard sync کو غیر فعال کریں۔ radare2، Ghidra، gdb، اور objdump والی Linux VM جیسی tools زیادہ تر static اور dynamic ضروریات کو پورا کرتی ہیں، جبکہ x64dbg اور Process Monitor والی Windows VM PE files کے لیے ضروری ہے۔ شک انگیز samples کو کبھی اپنی بنیادی machine پر analyze نہ کریں، اور cross-contamination سے بچنے کے لیے sessions کے درمیان ہمیشہ snapshots کو واپس کریں۔
Static Analysis: بغیر چلائے پڑھنا
file اور readelf -h (Linux) یا PE header inspector (Windows) استعمال کر کے file کی قسم اور architecture کی شناخت سے شروع کریں۔ entropy analysis کے ساتھ packing یا obfuscation کو check کریں — Detect It Easy جیسی tools غیر معمولی طور پر اعلیٰ entropy sections کو flag کرتے ہیں جو compression یا encryption کی نشاندہی کرتے ہیں۔
اگلا، binary کو Ghidra یا IDA Free جیسے disassembler میں لوڈ کریں۔ اس پر توجہ دیں:
- Imports اور exports —
CreateRemoteThreadیاVirtualAllocExجیسی API calls process injection کی نشاندہی کرتی ہیں؛WSAStartupnetworking کی تجویز دیتا ہے۔ - Strings — hardcoded URLs، file paths، یا debug messages کو سامنے لانے کے لیے
strings -n 8 binaryچلائیں جو functionality کو ظاہر کرتے ہیں۔ - Control flow graphs — Ghidra کا decompiler view خام assembly کو readable pseudo-C میں تبدیل کر دیتا ہے، loops اور conditionals کی سمجھ کو نمایاں طور پر تیز کرتا ہے۔
جیسے جیسے آپ functions کو سمجھیں، function names کو annotate کریں۔ sub_401020 کا نام بدل کر decrypt_config رکھنا آپ کی باقی analysis کو سمجھنا بہت آسان بناتا ہے۔
Dynamic Analysis: اسے چلتے ہوئے دیکھنا
Static analysis خاص طور پر obfuscated یا packed code کے خلاف محدود ہے۔ Binary کو debugger میں لوڈ کریں اور پہلے سے شناخت شدہ مشکوک API calls پر breakpoints سیٹ کریں۔ x64dbg میں، VirtualAlloc یا WriteProcessMemory پر breaking اکثر unpacking routines کو ظاہر کرتا ہے جیسے وہ decrypted code کو execution سے پہلے memory میں لکھتے ہیں۔
Process Monitor یا Linux پر strace/ltrace استعمال کر کے file، registry، اور network activity کو real time میں log کریں۔ یہ خارجی نقطہ نظر debugger سے اندرونی نقطہ نظر کی تکمیل کرتا ہے اور اکثر وہ رویہ سامنے آتا ہے جو disassembly میں سمجھنا مشکل ہے، جیسے عارضی file کی تخلیق یا DNS lookups۔
Network-capable binaries کے لیے، انہیں Wireshark یا INetSim جیسے fake internet simulator کے ساتھ چلائیں تاکہ command-and-control traffic کا مشاہدہ کریں، بغیر sample کو actual internet تک پہنچنے دیے۔
Anti-Analysis Tricks سے نمٹنا
بہت سی binaries — خاص طور پر malware — میں debuggers، virtual machines، یا sandboxes کی شناخت کے لیے ڈیزائن کیے گئے checks شامل ہوتے ہیں۔ عام تکنیکوں میں IsDebuggerPresent کو کال کرنا، VM-specific registry keys کو check کرنا، یا single-stepping کی شناخت کے لیے execution timing کو ماپنا شامل ہے۔ جب آپ static analysis کے دوران یہ checks دیکھیں، تو آپ debugger میں conditional jump کو patch کر سکتے ہیں تاکہ
AI کی مدد سے لکھا گیا، Michal Pilch (CISSP)، Korra Studio کے ذریعے جائزہ لیا گیا اور شائع کیا گیا۔
یہ Korra Studio کے علم کے ذخیرے کا ایک نوٹ ہے — یہ پلیٹ فارم ہر موضوع کو ایک سے ایک رہنمائی کے ساتھ جوڑتا ہے۔
مفت شروع کریںarrow_forward