Practical Reverse Engineering: A Hands-On Starter Guide
Learn the core workflow of reverse engineering binaries, from static analysis to dynamic debugging, with practical tool tips.
রিভার্স ইঞ্জিনিয়ারিং হল কম্পাইল করা সফটওয়্যার বিচ্ছিন্ন করার প্রক্রিয়া যাতে সোর্স কোড ছাড়াই এর লজিক, আচরণ এবং উদ্দেশ্য বোঝা যায়। আপনি ম্যালওয়্যার বিশ্লেষণ করছেন, বন্ধ-সোর্স বাইনারি অডিট করছেন বা CTF চ্যালেঞ্জ অধ্যয়ন করছেন না কেন, একই মূল কর্মপ্রবাহ প্রয়োগ হয়: প্রথমে তথ্য স্ট্যাটিক্যালি সংগ্রহ করুন, তারপর আপনার অনুমানগুলি ডায়নামিক্যালি নিশ্চিত করুন। এই গাইডটি সেই কর্মপ্রবাহের মধ্য দিয়ে যায় ব্যবহারিক, টুল-অজ্ঞেয়বাদী পদক্ষেপ সহ যা আপনি অবিলম্বে প্রয়োগ করতে পারেন।
নিরাপদ বিশ্লেষণ পরিবেশ সেট আপ করা
কোনো অপরিচিত বাইনারি স্পর্শ করার আগে, আপনার কাজের ক্ষেত্র বিচ্ছিন্ন করুন। আপনার হোস্টের কাছে নেটওয়ার্ক অ্যাক্সেস ছাড়াই একটি নিবেদিত ভার্চুয়াল মেশিন ব্যবহার করুন, বিশ্লেষণের আগে এটি স্ন্যাপশট করুন এবং শেয়ার করা ফোল্ডার এবং ক্লিপবোর্ড সিঙ্ক নিষ্ক্রিয় করুন। radare2, Ghidra, gdb এবং objdump সহ একটি Linux VM বেশিরভাগ স্ট্যাটিক এবং ডায়নামিক প্রয়োজন পূরণ করে, যখন x64dbg এবং Process Monitor সহ একটি Windows VM PE ফাইলের জন্য অপরিহার্য। কখনই আপনার প্রধান মেশিনে সন্দেহজনক নমুনা বিশ্লেষণ করবেন না এবং ক্রস-দূষণ এড়াতে সর্বদা সেশনের মধ্যে স্ন্যাপশট পুনরুদ্ধার করুন।
স্ট্যাটিক বিশ্লেষণ: চালানো ছাড়াই পড়া
file এবং readelf -h (Linux) বা একটি PE হেডার পরিদর্শক (Windows) ব্যবহার করে ফাইল টাইপ এবং আর্কিটেকচার শনাক্ত করে শুরু করুন। এন্ট্রপি বিশ্লেষণের সাথে প্যাকিং বা অস্পষ্টতা পরীক্ষা করুন — Detect It Easy এর মতো সরঞ্জামগুলি সন্দেহজনকভাবে উচ্চ এন্ট্রপি বিভাগে ফ্ল্যাগ করে যা সংকোচন বা এনক্রিপশন পরামর্শ দেয়।
পরবর্তীতে, বাইনারিটি Ghidra বা IDA Free এর মতো একটি ডিসঅ্যাসেম্বলারে লোড করুন। ফোকাস করুন:
- আমদানি এবং রপ্তানি —
CreateRemoteThreadবাVirtualAllocExএর মতো API কল প্রক্রিয়া ইনজেকশন ইঙ্গিত করে;WSAStartupনেটওয়ার্কিং পরামর্শ দেয়। - স্ট্রিং —
strings -n 8 binaryচালান কঠিন কোডেড URL, ফাইল পাথ বা ডিবাগ বার্তা উপভোগ করতে যা কার্যকারিতা প্রকাশ করে। - কন্ট্রোল ফ্লো গ্রাফ — Ghidra এর ডিকম্পাইলার দৃশ্য কাঁচা অ্যাসেম্বলিকে পাঠযোগ্য pseudo-C তে পরিণত করে, লুপ এবং শর্তাবলীর বোঝা নাটকীয়ভাবে ত্বরান্বিত করে।
ফাংশন নাম সাবধানে যেমন আপনি তাদের বুঝতে পারেন। sub_401020 কে decrypt_config তে পুনরায় নাম দেওয়া অবিলম্বে আপনার বাকি বিশ্লেষণকে অনুসরণ করা সহজ করে তোলে।
ডায়নামিক বিশ্লেষণ: এটি চলতে দেখা
স্ট্যাটিক বিশ্লেষণ শুধুমাত্র আপনাকে এত দূর নিয়ে যায়, বিশেষত অস্পষ্ট বা প্যাক করা কোডের বিরুদ্ধে। বাইনারিটি একটি ডিবাগারে লোড করুন এবং আগে চিহ্নিত করা সন্দেহজনক API কলে ব্রেকপয়েন্ট সেট করুন। x64dbg তে, VirtualAlloc বা WriteProcessMemory এ ব্রেক করা প্রায়ই আনপ্যাকিং রুটিনগুলি প্রকাশ করে যেহেতু তারা মেমরিতে বিকৃত কোড লেখে সম্পাদনের ঠিক আগে।
রিয়েল টাইমে ফাইল, রেজিস্ট্রি এবং নেটওয়ার্ক কার্যকলাপ লগ করতে Process Monitor বা Linux এ strace/ltrace ব্যবহার করুন। এই বাহ্যিক দৃশ্য ডিবাগার থেকে অভ্যন্তরীণ দৃশ্যকে পরিপূরক করে এবং প্রায়শই আচরণ পৃষ্ঠতল করে যা ডিসঅ্যাসেম্বলিতে স্পট করা কঠিন, যেমন অস্থায়ী ফাইল তৈরি বা DNS লুকআপ।
নেটওয়ার্ক-সক্ষম বাইনারিগুলির জন্য, Wireshark বা INetSim এর মতো একটি নকল ইন্টারনেট সিমুলেটর সহ সেগুলি চালান কমান্ড-এন্ড-কন্ট্রোল ট্রাফিক পর্যবেক্ষণ করতে নমুনা প্রকৃত ইন্টারনেটে পৌঁছানো ছাড়াই।
বিরোধী-বিশ্লেষণ ট্রিকস মোকাবেলা করা
অনেক বাইনারি — বিশেষত ম্যালওয়্যার — ডিবাগার, ভার্চুয়াল মেশিন বা স্যান্ডবক্স সনাক্ত করার জন্য ডিজাইন করা চেক অন্তর্ভুক্ত করে। সাধারণ কৌশলগুলির মধ্যে IsDebuggerPresent কল করা, VM-নির্দিষ্ট রেজিস্ট্রি কী পরীক্ষা করা বা সিঙ্গেল-স্টেপিং সনাক্ত করতে সম্পাদন সময় পরিমাপ করা অন্তর্ভুক্ত। যখন আপনি স্ট্যাটিক বিশ্লেষণের সময় এই চেকগুলি স্পট করেন, আপনি ডিবাগারে শর্তসাপেক্ষ জাম্প প্যাচ করতে পারেন
AI সহায়তায় লেখা, পর্যালোচনা ও প্রকাশ করেছেন Michal Pilch (CISSP), Korra Studio।
এটি Korra Studio-র নলেজ বেস থেকে একটি নোট — প্ল্যাটফর্মটি প্রতিটি বিষয়কে ১-এর-সাথে-১ মেন্টরিংয়ের সাথে জুড়ে দেয়।
বিনামূল্যে শুরু করুনarrow_forward