ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
مراحل کلی آنپک کردن دستی و خودکار

شناسایی پکر

استفاده از ابزارهایی مثل:

PEiD

Detect It Easy

بررسی سکشن‌ها ساختارهای غیرمعمول سایزهای عجیب و نام بخش‌ ها
👍6
پیدا کردن OEP (Original Entry Point)


اجرای فایل در دیباگر مثل x64dbg

گذاشتن Breakpoint روی API های کلیدی:

VirtualAlloc

WriteProcessMemory

GetProcAddress

یا حتی روی Entry Point خود فایل
👍5
گرفتن Dump از حافظه

وقتی به OEP رسیدید:

از ابزار Scylla یا x64dbg استفاده کنید برای گرفتن Memory Dump

آدرس‌های سکشن‌ها و Import Table رو ذخیره کنید
4🔥1
بازسازی Import Table

در بیشتر موارد Import Table فایل pack شده موقع dump خراب یا ناقصه

Scylla یا Import Reconstructor برای بازسازی IAT کمک می‌کنه

این مرحله باعث می‌شه فایل dump شده بعد از ذخیره درست اجرا بشه
3🔥1
ذخیره فایل آنپک شده

ذخیره فایل با IAT بازسازی‌ شده

اجرای تست برای اطمینان از سلامت فایل نهایی
👏3
نمونه کد آنپکر ساده با پایتون برای UPX

در فایل‌های pack شده با UPX گاهی فقط نیاز به اجرای ابزار UPX به‌ صورت اتوماتیک داریم:

import subprocess
import os

def unpack_upx(file_path):
if not os.path.exists(file_path):
print("فایل پیدا نشد")
return
try:
subprocess.run(['upx', '-d', file_path], check=True)
print("فایل با موفقیت آنپک شد")
except subprocess.CalledProcessError:
print("خطا در آنپک فایل")

unpack_upx('sample.exe')
👏3
ساخت آنپکر اختصاصی برای فایل‌های Pack شده

بعد از اینکه فهمیدیم یه فایل pack شده‌ست (مثلاً با UPX یا پکرهای خاص) وقتشه خودمون بتونیم برای اون یک آنپکر بسازیم و باینری اصلی رو بازیابی کنیم


چرا باید خودمون آنپکر بنویسیم؟

همه فایل‌ها با ابزارهای آماده قابل آنپک نیستن (مثلاً نسخه‌های دستکاری‌شده یا سفارشی‌شده‌ی UPX)

در بعضی مواقع نیاز به خودکارسازی داریم (مثلاً اسکن دسته‌ای)

این تمرین باعث می‌شه به درک عمیق‌تری از ساختار PE و مکانیزم اجرای ویندوز برسید
👍4👏1
شناسایی پکر

استفاده از ابزارهایی مثل:

PEiD

Detect It Easy

بررسی سکشن‌ها ساختارهای غیرمعمول سایزهای عجیب و نام بخش‌ها
👍4👏1
پیدا کردن OEP (Original Entry Point)

اجرای فایل در دیباگر مثل x64dbg

گذاشتن Breakpoint روی APIهای کلیدی:

VirtualAlloc

WriteProcessMemory

GetProcAddress

یا حتی روی Entry Point خود فایل


دنبال کردن flow تا وقتی وارد کد unpack شده → اونجا OEP واقعی هست
👍41
گرفتن Dump از حافظه

وقتی به OEP رسیدیم:

از ابزار Scylla یا x64dbg استفاده کنیم برای گرفتن Memory Dump

آدرس‌های سکشن‌ها و Import Table رو ذخیره کنید
👍41
انواع تکنیک‌های رایج Obfuscation

Renaming (تغییر نام‌ها):

تغییر نام تابع‌ها متغیرها کلاس‌ها به اسم‌های بی‌معنا مثل a, b2, _x1 و غیره

در کد NET. و Java خیلی رایجه



2 Control Flow Obfuscation:

تغییر ساختار طبیعی کدها با اضافه کردن پرش‌های بی‌ربط if/elseهای بی‌معنا و لوپ‌های تودرتو

در اسمبلی به شکل JMP‌های زیاد، CALL های بی‌دلیل یا پرش‌های به عقب دیده میشه



3 Junk Code Injection:

تزریق دستوراتی که هیچ کاری نمی‌کنن (NOP، push/pop‌های بی‌اثر) فقط برای گمراه کردن دیباگر یا دیس‌اسمبلر



4 Opaque Predicates:

شرط هایی که همیشه درست یا غلط هستن ولی تحلیل‌گر رو گیج میکنن

مثل:

CMP EAX, EAX
JNE somewhere ; این هیچ‌وقت اجرا نمیشه



5 String Encryption:

رمزنگاری رشته‌ها (مثل نام توابع، URLها کلیدها) که فقط در زمان اجرا رمزگشایی میشن



6 Anti-Decompiler / Anti-Debug Tricks:

مثل IsDebuggerPresent, CheckRemoteDebuggerPresent و دستوراتی که ابزارهای تحلیل رو crash میکنن
👍4👏1
توضیح کاربردها:

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


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


حتی گاهی برای مخفی کردن بخشی از منطق تجاری یا کد لایسنس استفاده میشه
👍41
تحلیل یک باینری با Control Flow Obfuscation
توی این قسمت یاد می‌گیریم چطور کدهایی که عمدا ساختار طبیعی‌شون به‌هم ریخته رو شناسایی کنیم و تمیز کنیم
👍32