ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
ReverseEngineering pinned «دوستان حمایت کنید کانال رو دمتون گرم 🫶🏼🙏🏻»
ساختار فایل ELF در لینوکس

ELF (Executable and Linkable Format)
فرمت استاندارد فایل‌های اجرایی در لینوکس و اندرویده ساختار ELF کمی متفاوت از PE هست ولی اصولش شبیه به همه

ساختار کلی یک فایل ELF:

| بخش | توضیح |

| ELF Header | اطلاعات کلی فایل اجرایی |

| Program Header Table | مشخصات سکشن‌های اجرایی |

| Section Header Table | اطلاعات سکشن‌های برنامه |

| Sections | بخش‌های مختلف برنامه (کد، داده، منابع) |

با ابزار readelf یا objdump می‌تونید این اطلاعات رو ببینید



بخش‌های مهم در فایل ELF

1 ELF Header:

شامل اطلاعات کلی فایل مثل نوع پردازنده نوع باینری (32 یا 64 بیت) و نقطه ورود (Entry Point)

2 Program Header Table:

این قسمت برای لود کردن فایل در حافظه استفاده میشه شامل ادرس‌هایی که باید به RAM منتقل بشن

3 Section Header Table (جدول سکشن‌ها):

مثل PE فایل‌های ELF هم چندین سکشن دارن:

4 Symbol Table:

اگه یه برنامه با دیباگ اطلاعات کامپایل شده باشه، توی این بخش اسم متغیرها و توابع رو می‌تونید ببینید

مقایسه PE و ELF در مهندسی معکوس

مهندسی معکوس در ویندوز معمولا روی PE و در لینوکس روی ELF انجام میشه، ولی اصول کلیشون شبیه به همه

ارتباط این اطلاعات با مهندسی معکوس

اگر بخواید کرک کنید یا آنپک کنید: باید Entry Point، Import Table و سکشن‌های text. و data. رو بررسی کنید

اگر بخواید بدافزار انالیز کنید: باید ببینید که از چه APIهایی استفاده می‌کنه (Import Table یا PLT/GOT در ELF)

اگر بخواید یه برنامه رو دیباگ کنید: باید بدونید که کد اجرایی داخل text. هست و مقدار متغیرها توی data. ذخیره میشه


فایل‌های اجرایی در ویندوز (PE) و لینوکس (ELF) ساختار خاصی دارن

PE شامل سکشن‌هایی مثل .text (کد برنامه) و .data (متغیرها) هست

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

برای انالیز PE از ابزارهایی مثل PEview و برای ELF از readelf استفاده میشه
👍41
ابزارهای آنپکینگ و بایپس Obfuscation

خیلی از برنامه‌های پولی و بدافزارها پک یا مبهم‌سازی (Obfuscation) میشن تا مهندسی معکوسشون سخت بشه این ابزارها کمک می‌کنن که اون‌ها رو آنپک کنید

UPX  یه ابزار رایج برای فشرده‌سازی و آنپک کردن فایل‌ها

Detect It Easy (DIE)  تشخیص پکینگ و کامپایلرهای فایل‌های اجرایی

x64dbg (با پلاگین Scylla)  آنپک کردن فایل‌های پک‌شده

Unpacker.me  یه سرویس آنلاین برای آنپک کردن بعضی باینری‌ها

وقتی برنامه‌ای که داری بررسی می‌کنی کدش به نظر عجیب و مبهم میاد یا وقتی اجرا میشه خودش رو از حالت فشرده خارج می‌کنه
👏21
Practical_Binary_Analysis_Build_Your_Own_Linux_Tools_for_Binary.pdf
33.5 MB
کتاب Practical Binary Analysis نوشته Dennis Andriesse یکی از منابع عالی برای یادگیری مهندسی معکوس، تحلیل باینری و امنیت نرم‌افزار است این کتاب به‌طور عملی و از پایه تحلیل باینری رو توضیح میده و به موضوعاتی مثل دیس‌اسمبلی دیباگینگ مهندسی معکوس و تحلیل آسیب‌پذیری‌ها رو میگه

موضوعات کلیدی کتاب:

مقدمه‌ای بر معماری کامپیوتر و پردازنده‌ها

کار با ابزارهای دیس‌اسمبلر و دیباگر

مهندسی معکوس برنامه‌های کامپایل‌شده
تحلیل باینری‌ها بدون نیاز به سورس‌ کد

مفاهیم امنیتی مثل اکسپلویت‌نویسی و بایپس مکانیزم‌های حفاظتی
10🔥1👏1
تحلیل ساختار فایل‌های Mach-O (macOS و iOS)

بعد از بررسی PE (ویندوز) و ELF (لینوکس) حالا بریم سراغ Mach-O (Mach Object) که فرمت فایل اجرایی در macOS و iOS هست این فرمت روی مک‌بوک آیفون آیپد و اپل واچ استفاده میشه و اگر بخوای مهندسی معکوس روی اپلیکیشن‌های macOS یا iOS انجام بدی، باید این ساختار رو بشناسی




1 Mach-O چیست؟

Mach-O یه فرمت فایل اجراییه که در سیستم‌عامل‌های macOS و iOS استفاده میشه این فرمت جایگزین a.out شد و شبیه ELF در لینوکس کار می‌کنه، اما یک سری تفاوت داره

فایل‌های Mach-O می‌تونن این نوع‌ها رو داشته باشن:

Executable:
فایل‌های اجرایی که می‌تونی مستقیماً اجرا کنی

Dylib (Dynamic Library):
مشابه DLL در ویندوز یا .so در لینوکس، برای کتابخانه‌های داینامیک

Bundle:
برای پلاگین‌های macOS (مثلاً پلاگین‌های Xcode)

Object Files:
فایل‌های شیء که قبل از لینک شدن استفاده میشن


اپلیکیشن‌های iOS معمولا به شکل Mach-O کامپایل میشن و داخل فایل IPA قرار می‌گیرن



2 ساختار کلی فایل Mach-O

فایل‌های Mach-O سه بخش اصلی دارن:

برخلاف PE و ELF که سکشن‌های مشخصی دارن Mach-O از یک سیستم انعطاف‌پذیرتر به نام "Load Commands" استفاده می‌کنه


3 Mach Header (هدر اصلی Mach-O)

Mach Header اولین بخش فایل هست که مشخص می‌کنه این فایل چی هست و روی چه پردازنده‌ای اجرا میشه

اطلاعات داخل Mach Header:


Magic Number  امضای فایل Mach-O (برای شناسایی نوع فایل)

CPU Type  مشخص می‌کنه این فایل برای چه پردازنده‌ای هست (Intel x86_64 ARM64 و ...)

File Type  مشخص می‌کنه که این فایل اجرایی کتابخانه یا فایل آبجکت هست

Number of Load Commands  تعداد کامندهای لود در فایل

Magic Number در Mach-O:

| مقدار | توضیح |


0xfeedface  Mach-O 32-bit

0xfeedfacf  Mach-O 64-bit

0xcafebabe  Fat Binary (برای اجرا روی چند CPU)

Fat Binary چیه؟

Fat Binary یه نوع خاص از Mach-O هست که می‌تونه کدهای چندین معماری مختلف رو داخل یک فایل داشته باشه مثلا یه برنامه که هم روی Intel و هم روی ARM (Apple Silicon) اجرا بشه


4 Load Commands (دستورات لود)

بعد از Mach Header یه لیست از Load Commands داریم که مشخص می‌کنه سیستم‌عامل چطور این فایل رو در حافظه لود کنه

مهم‌ترین Load Commandها


LC_SEGMENT_64 | تعریف یک Segment (بخش حافظه‌ای)

LC_LOAD_DYLIB  لود کردن یک کتابخانه داینامیک (Dylib)

LC_MAIN  مشخص کردن نقطه ورود برنامه

LC_SYMTAB | جدول نمادها (برای دیباگ و سمبل‌ها)

مثلاً اگه برنامه از یک DLL خارجی استفاده کنه Load Command مربوط به LC_LOAD_DYLIB نشون میده که کدوم کتابخونه‌ها باید لود بشن



5 Segments & Sections (کد، داده‌ها و سکشن‌ها)

بعد از Load Commands می‌رسیم به بخش اصلی فایل که شامل Segments & Sections هست این بخش دقیقا مشابه سکشن‌های .text، .data و ... در PE و ELF عمل می‌کنه

مهم‌ترین Segments در Mach-O:

Segment | توضیح

__TEXT | شامل کد اجرایی برنامه (مشابه .text در PE/ELF)

__DATA | شامل متغیرهای استاتیک (مشابه .data در PE/ELF)

__LINKEDIT | شامل اطلاعات مربوط به لینک شدن (مشابه Symbol Table در ELF)

مهم‌ترین Sections در Mach-O:

| Section | داخل کدوم Segment  توضیح |

| text | TEXT | شامل کد اسمبلی اجرایی برنامه

| cstring | TEXT | شامل رشته‌های متنی برنامه |

| data | DATA | شامل متغیرهای مقداردهی شده

| bss | DATA | شامل متغیرهای مقداردهی نشده |

مهندسی معکوس در Mach-O بیشتر روی TEXT و DATA انجام میشه،چون کد و متغیرهای مهم اینجا هستن


6 مقایسه Mach-O با PE و ELF


Mach-O انعطاف‌پذیرتر از PE و ELF هست، ولی بررسیش سخت‌تره چون Load Commands به جای Section Table استفاده میشن

7 کاربرد Mach-O در مهندسی معکوس


اگر بخوای کرک کنی یا بایپس کنی:
باید __TEXT (کد برنامه) و LC_LOAD_DYLIB (وابستگی به کتابخانه‌ها) رو بررسی کنی

اگر بخوای اپلیکیشن‌های iOS مهندسی معکوس کنی:
باید با Mach-O و ابزارهایی مثل Hopper، Ghidra، otool و jtool کار کنی

اگر بخوای دیباگ کنی: باید بدونی که متغیرها توی DATA و کد داخل TEXT هستن

ساختارش شامل Mach Header Load Commands و Segments هست

نقطه ورود (Entry Point) در LC_MAIN تعریف میشه

کد برنامه در TEXT و متغیرها در DATA قرار دارن

برای بررسی Mach-O از ابزارهایی مثل otool, jtool, Hopper, و Ghidra استفاده میشه
🔥51
📌 ابزارهای دی‌کامپایل و بازگردانی سورس‌کد

اگه برنامه‌ای به زبان‌های سطح بالا مثل C#، Java یا Python نوشته شده باشه می‌تونی سورس‌کدش رو برگردونی

🔹 dnSpy / ILSpy → دی‌کامپایلر برای برنامه‌های دات‌نت (C# و VB)

🔹 JADX / Bytecode Viewer → دی‌کامپایلر برای برنامه‌های اندروید (APK)

🔹 Ghidra (با پلاگین‌های decompiler) → دی‌کامپایلر برای باینری‌های کامپایل‌شده

🔹 Decompiler.com → یه سرویس آنلاین برای دی‌کامپایل زبان‌های مختلف

💡
وقتی بخوای ببینی یه برنامه‌ای که به زبان Java یا C# نوشته شده، چه کدی داره
🔥4👍1
The_IDA_Pro_book_The_unofficial_guide_to_the_worlds_most_popular.pdf
6.1 MB
کتاب The IDA Pro Book یکی از بهترین منابع برای یادگیری مهندسی معکوس با IDA Pro هست توی این کتاب یاد می‌گیرید که چطور کدهای باینری و اسمبلی رو تحلیل کنید ساختار یه برنامه رو بشناسید مکانیزم‌های ضد مهندسی معکوس رو دور بزنید و حتی بدافزارها رو بررسی کنید

چرا این کتاب مهمه؟

چون IDA Pro یکی از قوی‌ترین ابزارهای مهندسی معکوسه و این کتاب قدم‌به‌قدم بهت یاد میده بهتون که چطور ازش استفاده کنید از رابط کاربری و اسکریپت‌نویسی گرفته تا دیباگ کردن و تحلیل نرم‌افزارها


اگه ردتیمینگ کار می‌کنید و دنبال اینید که بفهمید برنامه‌ها چطور از مهندسی معکوس محافظت می‌شن
🔥10👍1
تکنیک‌های ضد دیباگ و ضد مهندسی معکوس در نرم‌افزارها


حالا که ساختار فایل‌های اجرایی (PE, ELF, Mach-O) رو شناختید باید بدونید که چطور توسعه‌دهنده‌ها از مهندسی معکوس جلوگیری می‌کنن توی این بخش میریم سراغ مکانیزم‌های ضد دیباگ و ضد مهندسی معکوس که توی نرم‌افزارهای مختلف استفاده میشن



1 چرا نرم‌افزارها از ضد دیباگ استفاده می‌کنن؟

تکنیک‌های ضد دیباگ (Anti-Debugging) و ضد مهندسی معکوس (Anti-Reversing)

معمولا برای این کارها استفاده میشن:

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

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


2 روش‌های تشخیص دیباگر در ویندوز (Anti-Debugging در PE)

ویندوز یه سری API داره که برنامه‌ها با استفاده از اون‌ها می‌تونن بفهمن که آیا تحت دیباگ هستن یا نه

📌 مهم‌ترین روش‌ها :

IsDebuggerPresent()

این تابع از kernel32.dll چک می‌کنه که برنامه داره تحت دیباگ اجرا میشه یا نه


#include <windows.h>
#include <iostream>

int main() {
if (IsDebuggerPresent()) {
std::cout << "Debugger detected!" << std::endl;
return 1;
}
std::cout << "No debugger detected." << std::endl;
return 0;
}

🔹 چطور بایپسش کنیم؟
🔹 مقدار PEB->BeingDebugged رو توی دیباگر تغییر بدیم.




CheckRemoteDebuggerPresent()

این API چک می‌کنه که یه دیباگر خارجی مثل x64dbg به پروسه وصل شده یا نه

BOOL IsDebuggerAttached() {
BOOL isDebugger = FALSE;
CheckRemoteDebuggerPresent(GetCurrentProcess(), &isDebugger);
return isDebugger;
}


برای بایپس کردن این تابع می‌تونیم مقدار برگشتی رو تغییر بدیم



NtQueryInformationProcess()

این تابع از ntdll.dll اطلاعاتی در مورد پروسه می‌گیره، از جمله اینکه آیا دیباگ میشه یا نه

#include <windows.h>
#include <winternl.h>
#include <iostream>

typedef NTSTATUS(WINAPI* pNtQueryInformationProcess)(HANDLE, ULONG, PVOID, ULONG, PULONG);

int main() {
pNtQueryInformationProcess NtQIP = (pNtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess");

DWORD isDebuggerPresent = 0;
NtQIP(GetCurrentProcess(), 0x07, &isDebuggerPresent, sizeof(DWORD), NULL);

if (isDebuggerPresent) {
std::cout << "Debugger detected!" << std::endl;
return 1;
}

std::cout << "No debugger detected." << std::endl;
return 0;



این روش رو می‌تونیم با تغییر مقدار ProcessDebugPort در رجیسترها دور بزنیم.



3 روش‌های ضد دیباگ در لینوکس (ELF Anti-Debugging)

توی لینوکس، برنامه‌ها می‌تونن با استفاده از ptrace() تشخیص بدن که تحت دیباگ هستن

استفاده از ptrace() برای جلوگیری از دیباگ


#include <sys/ptrace.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void anti_debug() {
if (ptrace(PTRACE_TRACEME, 0, 0, 0) == -1) {
printf("Debugger detected!\n");
exit(1);
}
}

int main() {
anti_debug();
printf("Program is running normally.\n");
return 0;
}


برای بایپس این روش، می‌تونیم با gdb مقدار برگشتی ptrace() رو تغییر بدیم


4 روش‌های ضد دیباگ در macOS (Mach-O Anti-Debugging)

توی macOS، روش‌های مشابه لینوکس استفاده میشه ولی از sysctl() هم میشه برای تشخیص دیباگر استفاده کرد:

#include <sys/types.h>
#include <sys/sysctl.h>
#include <stdio.h>

int is_debugger_attached() {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()};
struct kinfo_proc info;
size_t size = sizeof(info);

sysctl(mib, 4, &info, &size, NULL, 0);

return (info.kp_proc.p_flag & P_TRACED) != 0;
}

int main() {
if (is_debugger_attached()) {
printf("Debugger detected!\n");
return 1;
}

printf("No debugger detected.\n");
return 0;
}


برای بایپس، می‌تونیم مقدار p_flag رو تغییر بدیم



5 تکنیک‌های پیشرفته ضد مهندسی معکوس

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

مهم‌ترین تکنیک‌ها:

بدافزارهای حرفه‌ای مثل Zeus و TrickBot از این تکنیک‌ها استفاده می‌کنن



6 ابزارهای دور زدن ضد دیباگ

🔹 Windows: ScyllaHide, x64dbg, Cheat Engine

🔹 Linux: GDB, ptrace hooks, Frida

🔹 macOS: LLDB, Hopper, Frida
👍52
برای دور زدن مکانیزم‌های ضد دیباگ، می‌تونیم APIهای مربوطه رو هوک کنیم یا مقدار برگشتی اون‌ها رو تغییر بدیم



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

روش‌های ساده مثل IsDebuggerPresent() و ptrace() در ویندوز و لینوکس استفاده میشن.

روش‌های پیشرفته‌تر مثل Code Virtualization و Packing در بدافزارها دیده میشن

ابزارهایی مثل Frida و x64dbg می‌تونن این مکانیزم‌ها رو دور بزنن
👍4👏1
The_Ghidra_Book_The_Definitive_Guide_by_Chris_Eagle,_Kara_Nance.pdf
17.6 MB
معرفی کتاب "The Ghidra Book"

📚 نام کتاب: The Ghidra Book: The Definitive Guide
✍️ نویسندگان: Chris Eagle و Kara Nance
📅 انتشار: سال 2020
📖 موضوع: مهندسی معکوس با Ghidra


🔍 کتاب درباره چی هست؟

کتاب The Ghidra Book یکی از بهترین منابع برای یادگیری Ghidra، ابزار رایگان و متن‌باز تحلیل باینری توسعه‌یافته توسط NSA است. این کتاب از مقدماتی تا پیشرفته تمام قابلیت‌های Ghidra رو آموزش میده و به مهندسی معکوس نرم‌افزارها، آنالیز بدافزارها و کرک کردن باینری‌ها می‌پردازه
👍17
پکینگ و آنپکینگ باینری‌ها


حالا که با تکنیک‌های ضد دیباگ و ضد مهندسی معکوس آشنا شدید وقتشه پکینگ (Packing) و آنپکینگ (Unpacking) باینری‌ها رو بررسی کنیم این یکی از مهم‌ترین بخش‌های مهندسی معکوس هست چون بسیاری از بدافزارها و نرم‌افزارهای محافظت‌شده از پکینگ استفاده می‌کنن



1 پکینگ (Packing) چیست و چرا استفاده می‌شود؟

🔹 پکینگ یعنی فشرده‌سازی یا رمزگذاری کد اجرایی برای مخفی کردن ساختار اصلی آن

🔹 این کار معمولاً با پکرها (Packers) انجام میشه که فایل اجرایی رو تغییر میدن و کد اصلی فقط در زمان اجرا در حافظه باز میشه

📌 دلایل استفاده از پکینگ:

جلوگیری از مهندسی معکوس و کرک شدن نرم‌افزارها (مثل بازی‌ها و برنامه‌های پولی)

کاهش حجم فایل‌های اجرایی (در نسخه‌های قدیمی‌تر برای نرم‌افزارهای فشرده‌شده)

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

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



2 پکرهای معروف و پرکاربرد



🔹 پکرهای قانونی:
برای محافظت از نرم‌افزارهای تجاری

🔹 پکرهای بدافزار:
برای مخفی کردن بدافزارها و دور زدن آنتی‌ویروس


📌 برخی از پکرهای معروف:


پکرهایی مثل Themida و VMProtect در نرم‌افزارهای پولی استفاده میشن ولی UPX بیشتر برای فشرده‌سازی ساده کاربرد داره


3 روش‌های تشخیص یک فایل پک‌شده

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

🔹 روش 1: بررسی امضای پکرها با PEiD یا Detect It Easy (DIE)

🔹 ابزار PEiD یا DIE می‌تونن پکر مورد استفاده در یک فایل PE رو شناسایی کنن

💻 در ویندوز:

1 PEiD یا Detect It Easy (DIE) رو اجرا کن.


2 فایل اجرایی رو داخلش بکش



3 اگر یه اسم پکر مثل UPX یا ASPack نشون داد، یعنی پک شده.



🔹 روش 2: بررسی جدول بخش‌های فایل (Sections) در PE


🔹 پک‌شده‌ها معمولاً بخش‌های غیرعادی مثل UPX0, UPX1, .text با اندازه خیلی کم دارن

🔹 می‌تونی با PE-Bear یا CFF Explorer فایل PE رو باز کنید و ببینید که آیا بخش‌های مشکوک داره یا نه

🔹 روش 3: اجرای باینری در دیباگر و بررسی تغییرات حافظه

🔹 بعضی پک‌شده‌ها موقع اجرا کد واقعی‌شون رو در حافظه Extract می‌کنن

🔹 می‌تونی با x64dbg یا OllyDbg اجراش کنی و ببینی که آیا در طول اجرا کدش تغییر می‌کنه یا نه

4 آنپکینگ دستی باینری‌ها (Unpacking)

برای باز کردن کد مخفی شده چندین روش وجود داره:

🔹 روش1:
آنپک کردن خودکار با UPX

اگر فایل با UPX پک شده باشه به راحتیه می‌تونید آنپکش کنید:

upx -d packed.exe -o unpacked.exe

اما... پکرهای پیچیده‌تر مثل Themida یا VMProtect اینقدر راحت آنپک نمیشن


🔹 روش ۲:
پیدا کردن OEP (Entry Point اصلی) و دامپ کردن فایل از حافظه

📌 مراحل آنپکینگ دستی در دیباگر (مثلاً x64dbg):

1 فایل پک‌شده رو توی x64dbg باز کن


2 نقاط مشکوک رو پیدا کن:

اغلب پک‌شده‌ها قبل از اجرای کد اصلی، روی NtProtectVirtualMemory یا VirtualAlloc توقف دارن



3 روی OEP (Original Entry Point) بریک‌پوینت بذار:

معمولاً JMP EAX یا JMP ESP نشونه اینه که کد آنپک شده و آماده اجراست



4 وقتی به OEP رسیدی فایل رو از حافظه دامپ کن:

از Scylla یا OllyDump برای استخراج باینری استفاده کن



5 ریبیلد کردن بخش‌های PE:

اگر آدرس Import Table خراب شد می‌تونی با Import Reconstructor اصلاحش کنی




این روش معمولاً برای پکرهای پیچیده مثل Themida و VMProtect استفاده میشه




5 ابزارهای مهم برای آنپک کردن باینری‌ها

🔹 ابزارهای تشخیص پکرها:

PEiD – شناسایی پکرهای رایج

Detect It Easy (DIE) – تحلیل باینری و پیدا کردن امضای پکرها

Exeinfo PE – نمایش اطلاعات پکرهای پیشرفته

🔹 ابزارهای دیباگ و آنپکینگ:

x64dbg / OllyDbg – دیباگ و یافتن OEP

Scylla / ImpRec – ریبیلد کردن Import Table بعد از آنپکینگ

UPX – برای پک و آنپک کردن UPX


🔹 ابزارهای تحلیل حافظه :

Process Hacker – نمایش حافظه پروسه‌ها

Hollows Hunter – تشخیص کدهای تزریق شده و Unpacking Runtime



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

پکرهای معروف مثل UPX Themida و VMProtect در نرم‌افزارهای قانونی و بدافزارها استفاده میشن

برای تشخیص یک فایل پک‌شده ابزارهایی مثل PEiD DIE و x64dbg استفاده میشن

آنپکینگ دستی باینری‌ها شامل پیدا کردن OEP  دامپ کردن از حافظه و بازسازی Import Table هست

ابزارهایی مثل Scylla  OllyDbg و Process Hacker برای آنپکینگ استفاده میشن
👍123
دیباگ کردن برنامه‌ها بدون سورس‌کد



🔍 دیباگ (Debugging) چیست و چرا مهمه؟

🔹 دیباگ کردن یعنی اجرای یک برنامه به‌صورت خط به خط برای فهمیدن چگونگی عملکرد اون


🔹 وقتی سورس‌کد رو نداریم با دیباگ کردن می‌تونیم مقدار متغیرها شرط‌ها و الگوریتم‌های داخلی برنامه رو بفهمیم


🔹 این کار برای آنالیز بدافزارها کرک کردن نرم‌افزارها و رفع باگ در برنامه‌های ناشناس استفاده میشه

📌 اهداف دیباگ بدون سورس‌کد:

فهمیدن ساختار برنامه

پیدا کردن کلیدهای رمزنگاری توکن‌ها و پسوردهای داخلی

بایپس کردن مکانیزم‌های امنیتی مثل ضد دیباگ و لایسنس

شناسایی نقاط ورود و اجرای کد




ابزارهای دیباگ برای برنامه‌های ویندوزی


🔹 برای دیباگ برنامه‌های کامپایل شده (مثلاً فایل‌های EXE یا DLL) از دیباگرهای سطح پایین استفاده می‌کنیم مهم‌ترین ابزارها اینا هستن:

دیباگرهای معروف برای باینری‌های ویندوز


x64dbg – محبوب‌ترین دیباگر برای مهندسی معکوس و کرک نرم‌افزار

OllyDbg – نسخه قدیمی‌تر ولی همچنان کاربردی

WinDbg – دیباگر مایکروسافت برای ویندوز و کرنل‌دیباگینگ

IDA Pro – قوی‌ترین ابزار برای دی‌کامپایل و دیباگ کردن توابع

ابزارهای کمکی برای دیباگ

Process Hacker – نمایش جزئیات پردازش‌های در حال اجرا

Cheat Engine – برای تغییر مقدار متغیرها در حافظه

Scylla – دامپ کردن و بازسازی Import Table




آشنایی با محیط x64dbg برای دیباگ باینری‌ها

🔹 x64dbg یکی از بهترین ابزارها برای دیباگ کردن برنامه‌های 32 بیتی و 64 بیتی در ویندوز هست.

🔹 می‌تونیم فایل اجرایی (EXE) رو باز کنیم کد اسمبلی رو ببینیم روی نقاط مختلف بریک‌پوینت بذاریم و مقدار متغیرها رو بررسی کنیم
🔥11👍1
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