ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
Reversing_secrets_of_reverse_engineering_by_Eldad_Eilam_2005_@bookzillaaa.pdf
8.4 MB
کتاب Secrets of Reverse Engineering نوشته Eldad Eilam است

این کتاب یکی از بهترین منابع برای یادگیری مهندسی معکوس نرم‌افزاره و مفاهیم کلیدی رو از پایه تا سطح پیشرفته توضیح میده برخی از موضوعاتی که در کتاب پوشش داده شدن

مقدمه‌ای بر مهندسی معکوس و کاربردهای آن

تحلیل باینری‌ها و ساختارهای اجرایی

ابزارهای مورد استفاده مانند IDA Pro، OllyDbg و SoftICE

تکنیک‌های دیباگینگ و تحلیل بدافزارها

مکانیزم‌های ضد مهندسی معکوس و روش‌های بایپس آن‌ها


اگر تازه‌کار هستی این کتاب یه نقطه شروع عالیه
17👍2
📌 چطور یک فایل EXE را در x64dbg دیباگ کنیم؟

1️⃣ x64dbg رو باز کن و برنامه رو Load کن

از منوی File → Open، فایل EXE رو انتخاب کن.

2️⃣ روی نقطه ورود (Entry Point) بریک‌پوینت بذار معمولاً
در اولین دستور PUSH EBP یا MOV EBP, ESP


3️⃣ اجرای برنامه تا رسیدن به بریک‌پوینت
روی دکمه Run (F9) کلیک کن تا برنامه اجرا بشه و به اولین بریک‌پوینت برسه


4️⃣ بررسی رجیسترها و استک

پنل رجیسترها رو ببینید و مقدار متغیرها و آدرس‌های حافظه رو بررسی کنید

5️⃣ ردیابی دستورات مهم مثل CALL, JMP, CMP

این دستورات نشون میدن که برنامه چطور داده‌ها رو پردازش می‌کنه و کجا تصمیم‌گیری انجام میشه.

6️⃣ تغییر مقدار متغیرها و بایپس کردن شرط‌ها

اگه برنامه یه مکانیزم ضد دیباگ یا لایسنس داره می‌تونیم مقدار متغیرهای خاص رو تغییر بدیم تا برنامه گول بخوره





پیدا کردن رشته‌های مهم در حافظه برنامه

🔹 بعضی وقت‌ها برنامه‌ها پسوردها، کلیدهای لایسنس، توکن‌های API یا پیام‌های مخفی دارن.

🔹 می‌تونیم با ابزارهای دیباگ این رشته‌ها رو استخراج کنیم


📌 چطور رشته‌های مخفی رو پیدا کنیم؟

با x64dbg:

1. از منوی Search → Search for گزینه Strings رو انتخاب کنید


2. تمام رشته‌های استفاده شده در برنامه رو ببینیپ و دنبال چیزهای مشکوک بگردید



با ابزارهای کمکی مثل Strings از Sysinternals:

strings.exe my_program.exe

این دستور، تمام رشته‌های خوانا داخل فایل اجرایی رو نشون میده.


بررسی حافظه با Cheat Engine:


برنامه رو اجرا کن و Cheat Engine رو باز کن.


پروسه برنامه رو انتخاب کنید و جستجوی Text/String انجام بدید.


اگر چیزی پیدا شد مقدارش رو تغییر بدید و ببینید چه اتفاقی می‌افته ایا برنامه کرک میشه یا نه
👍16🔥31
📌 دیباگ کردن برنامه‌های پایتونی:

از ابزار PySpy یا Frida برای مانیتورینگ کد در حال اجرا استفاده کنید
فایل‌های pyc رو با uncompyle6 دی‌کامپایل کنید

📌 دیباگ کردن برنامه‌های جاوا:

از JD-GUI یا Bytecode Viewer برای دیدن کد استفاده کنید
با JDB (Java Debugger) می‌تونی متغیرها و توابع رو بررسی کنید


📌 دیباگ کردن برنامه‌های دات نت:

از dnSpy برای دی‌کامپایل و دیباگ کد C# استفاده کنید
توابع رو ویرایش کنید و مجددا کامپایل کنید
#debug
#python
#java
👍19👏1
18👏4
اگه ممبرهای کانال نره بالا متاسفانه مجبور میشم فعالیت رو متوقف کنم چون واقعا انگیزه ای نیست برای ادامه دادن پس تا جایی که میتونید کانال رو share کنید دمتون گرم عیدتونم مبارک سال خوبی داشته باشید❤️‍🔥🫶🏼
47👎3👏1😁1🍌1
ReverseEngineering pinned «اگه ممبرهای کانال نره بالا متاسفانه مجبور میشم فعالیت رو متوقف کنم چون واقعا انگیزه ای نیست برای ادامه دادن پس تا جایی که میتونید کانال رو share کنید دمتون گرم عیدتونم مبارک سال خوبی داشته باشید❤️‍🔥🫶🏼»
ReverseEngineering pinned «دوستان به زودی دوباره شروع میکنیم دمتون گرم بابت حمایت ها دوستون دارم🫶🏼»
انواع مکانیزم‌های لایسنس

🔹 نرم‌افزارها از روش‌های مختلفی برای کنترل دسترسی و اعتبارسنجی لایسنس استفاده میکنن رایج‌ترین روش‌ها اینان:

کلید سریال (Serial Key)

نرم‌افزار از کاربر یک کلید لایسنس درخواست می‌کنه و اون رو اعتبارسنجی می‌کنه

معمولاً با الگوریتم‌هایی مثل RSA، SHA، MD5 یا XOR بررسی می‌شه


فعال‌سازی آنلاین (Online Activation)

نرم‌افزار برای تایید لایسنس به سرور شرکت سازنده متصل می‌شه

این روش معمولاً از HTTP API، WebSockets یا RPC استفاده می‌کنه


قفل سخت‌افزاری (Hardware Locking)

لایسنس به شماره سریال CPU، هارد دیسک یا MAC Address وابسته است

تغییر سخت‌افزار باعث غیرفعال شدن لایسنس می‌شه


دونگل USB (USB Dongle)

یک قطعه سخت‌افزاری برای فعال‌سازی نرم‌افزار استفاده می‌شه

معمولاً از دستورات خاصی در درایور Kernel Mode استفاده می‌کنه


محافظت از کد (Obfuscation & Packing)

چرا برخی نرم افزار ها از پکر ها یا اوبفاسکیشن استفاده میکنن؟
برخی نرم‌افزارها از پکرها و اوبفاسکیشن استفاده می‌کنن تا کرک کردن سخت‌تر بشه

#obfuscation
#bypass
#license
🔥131👏1
مراحل کرک کردن یک نرم‌افزار

📌 برای کرک کردن باید مسیر اجرای لایسنس رو پیدا کنیم و اون رو بایپس کنیم

🔍 مرحله 1: بررسی اولیه نرم‌افزار

بررسی کن که نرم‌افزار کلید سریال قبول می‌کنه یا نیاز به اتصال اینترنت داره؟
فایل‌های اجرایی (.EXE یا .DLL) رو با PEiD یا Detect It Easy (DIE) اسکن کن تا ببینی آیا پک شده (Packed) یا نه.

🛠 مرحله ۲: پیدا کردن توابع لایسنس در اسمبلی

فایل اجرایی رو در IDA Pro یا x64dbg باز کن و دنبال توابع strcmp, strcmpi, RegQueryValueEx, IsDebuggerPresent بگرد
روی strcmp یا memcmp بریک‌پوینت بذار و مقدار کلید درست رو پیدا کن

🚀 مرحله ۳: بایپس کردن چک لایسنس

مقدار EAX رو تغییر بده تا نتیجه cmp برابر true بشه.
با NOP کردن شرط JNZ یا JZ می‌تونی چک لایسنس رو حذف کنی

MOV EAX, 1 ; مقدار بررسی لایسنس رو به True تغییر بده

NOP ; حذف پرش غیرمجاز

#crack
#bypass
👍121🔥1👏1
کرک کردن نرم‌افزارهای آنلاین

🔹 بعضی نرم‌افزارها برای فعال‌سازی به سرور متصل میشن برای کرک کردن این نرم‌افزارها باید ترافیک رو مانیتور کنیم و تغییر بدیم

📌 روش‌های کرک کردن نرم‌افزارهای آنلاین:

مانیتورینگ HTTP/S با Burp Suite یا Fiddler

ببین درخواست به چه API ارسال می‌شه و پاسخ سرور رو جعل کن
ساخت سرور جعلی (Fake License Server)

می‌تونی با ابزارهایی مثل mitmproxy یک سرور فیک بسازی و نرم‌افزار رو گول بزنی
پچ کردن درخواست‌های لایسنس در دیباگر

درخواست HTTP رو با x64dbg یا IDA Pro پیدا کن و مقدار لایسنس رو تغییر بده
#crack
#reverse
9👏3
شناخت سطح حمله (Attack Surface)

اولین قدم اینه که بفهمیم اپلیکیشن چه نقاط ورودی (entry point)‌هایی داره:

ورودی کاربر (فرم‌ها، فیلدها، فایل‌های ورودی)

ارتباط با شبکه (پورت‌ها، سوکت‌ها، APIها)

Registeryو فایل‌های سیستمی

COM objects و DLLها

Named Pipes و فایل‌های موقت

#Attack
#Attack_Surface
#Application
9
بررسی رفتار اپلیکیشن با ابزارهای دینامیک

ابزارهایی که در حین اجرای برنامه استفاده می‌شن تا ببینیم دقیقا چیکار می‌کنه:

🔹 Procmon – بررسی فعالیت رجیستری و فایل

🔹 Wireshark – تحلیل ترافیک شبکه

🔹 Process Hacker / Process Explorer – مانیتور کردن پروسس‌ها

🔹 Dependency Walker – بررسی وابستگی‌های DLL

🔹 PE-sieve / Scylla – بررسی تزریق کد یا آنپک

#Dynamic
#Application
🔥8👍1
آنالیز فایل اجرایی (Static Analysis)

قبل از اجرا فایل رو بررسی می‌کنیم:

با PEiD یا Detect It Easy چک می‌کنیم فایل پکر شده یا نه

با Ghidra یا IDA Pro توابع ورودی و حساس رو تحلیل می‌کنیم

دنبال فانکشن‌هایی مثل strcpy, memcpy, CreateProcess, WinExec, LoadLibrary می‌گردیم

اگر از فایل یا رجیستری اطلاعات میخونه بررسی می‌کنیم قابل تزریق هستن یا نه

#Analys
#File
👍8🔥3
پیدا کردن آسیب‌پذیری‌های رایج

برخی از آسیب‌پذیری‌های پرتکرار در اپلیکیشن‌های ویندوزی:

Buffer Overflow
تابع‌هایی که بدون بررسی سایز کپی می‌کنن مثل strcpy, gets, memcpy

DLL Hijacking
اگر برنامه DLLها رو از مسیر نادرست بارگذاری کنه می‌شه یه DLL مخرب جایگزین کرد

Insecure File Permissions
وقتی فایل‌ها یا رجیستری‌ها دسترسی نوشتن برای همه دارن

Command Injection / Code Execution
برنامه ورودی کاربر رو مستقیم به تابعی مثل system() پاس می‌ده

Unquoted Service Path
مسیر سرویس‌هایی که بینشون فاصله هست و کوتیشن ندارن

Named Pipe Hijacking
استفاده نادرست از Named Pipeها می‌تونه باعث privilege escalation بشه
🔥71
بهره‌برداری (Exploitation) و PoC نوشتن

بعد از پیدا کردن آسیب‌پذیری، باید اثباتش کنیم:

ساخت PoC برای buffer overflow با ابزارهایی مثل Immunity Debugger

نوشتن DLL جعلی برای حمله DLL Hijacking

ساخت فایل .bat یا .exe برای اجرا با دسترسی بالا

استفاده از ابزارهایی مثل Metasploit, Exploit Pack, یا msfvenom برای payload سازی
🔥51