ساخت آنپکر اختصاصی برای فایلهای Pack شده
بعد از اینکه فهمیدید یه فایل pack شدهست (مثلا با UPX یا پکرهای خاص) وقتشه خودتون بتونید برای اون یک آنپکر بسازید و باینری اصلی رو بازیابی کنید
چرا باید خودمون آنپکر بنویسیم؟
همه فایلها با ابزارهای آماده قابل آنپک نیستن مثلا نسخههای دستکاری شده یا سفارشیشدهی UPX
در بعضی مواقع نیاز به خودکارسازی دارید (مثلا اسکن دستهای)
این تمرین باعث میشه به درک عمیقتری از ساختار PE و مکانیزم اجرای ویندوز برسید
بعد از اینکه فهمیدید یه فایل pack شدهست (مثلا با UPX یا پکرهای خاص) وقتشه خودتون بتونید برای اون یک آنپکر بسازید و باینری اصلی رو بازیابی کنید
چرا باید خودمون آنپکر بنویسیم؟
همه فایلها با ابزارهای آماده قابل آنپک نیستن مثلا نسخههای دستکاری شده یا سفارشیشدهی UPX
در بعضی مواقع نیاز به خودکارسازی دارید (مثلا اسکن دستهای)
این تمرین باعث میشه به درک عمیقتری از ساختار PE و مکانیزم اجرای ویندوز برسید
👍6
مراحل کلی آنپک کردن دستی و خودکار
شناسایی پکر
استفاده از ابزارهایی مثل:
PEiD
Detect It Easy
بررسی سکشنها ساختارهای غیرمعمول سایزهای عجیب و نام بخش ها
شناسایی پکر
استفاده از ابزارهایی مثل:
PEiD
Detect It Easy
بررسی سکشنها ساختارهای غیرمعمول سایزهای عجیب و نام بخش ها
👍6
پیدا کردن OEP (Original Entry Point)
اجرای فایل در دیباگر مثل x64dbg
گذاشتن Breakpoint روی API های کلیدی:
VirtualAlloc
WriteProcessMemory
GetProcAddress
یا حتی روی Entry Point خود فایل
👍5
https://medium.com/@ibnuilham/dodging-the-debugger-winantidbg0x300-picoctf-2024-writeup-0d913ad398ba
Medium
Dodging the Debugger: WinAntiDbg0x300 (picoCTF 2024 Writeup)
Hey everyone! I just wrapped up a fun little reverse engineering challenge from picoCTF 2024 called “WinAntiDbg0x300,” and thought I’d…
👍4🍓1
گرفتن Dump از حافظه
وقتی به OEP رسیدید:
از ابزار Scylla یا x64dbg استفاده کنید برای گرفتن Memory Dump
آدرسهای سکشنها و Import Table رو ذخیره کنید
وقتی به OEP رسیدید:
از ابزار Scylla یا x64dbg استفاده کنید برای گرفتن Memory Dump
آدرسهای سکشنها و Import Table رو ذخیره کنید
❤4🔥1
بازسازی Import Table
در بیشتر موارد Import Table فایل pack شده موقع dump خراب یا ناقصه
Scylla یا Import Reconstructor برای بازسازی IAT کمک میکنه
این مرحله باعث میشه فایل dump شده بعد از ذخیره درست اجرا بشه
در بیشتر موارد Import Table فایل pack شده موقع dump خراب یا ناقصه
Scylla یا Import Reconstructor برای بازسازی IAT کمک میکنه
این مرحله باعث میشه فایل dump شده بعد از ذخیره درست اجرا بشه
❤3🔥1
ذخیره فایل آنپک شده
ذخیره فایل با IAT بازسازی شده
اجرای تست برای اطمینان از سلامت فایل نهایی
ذخیره فایل با IAT بازسازی شده
اجرای تست برای اطمینان از سلامت فایل نهایی
👏3
نمونه کد آنپکر ساده با پایتون برای UPX
در فایلهای pack شده با UPX گاهی فقط نیاز به اجرای ابزار 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 و مکانیزم اجرای ویندوز برسید
بعد از اینکه فهمیدیم یه فایل pack شدهست (مثلاً با UPX یا پکرهای خاص) وقتشه خودمون بتونیم برای اون یک آنپکر بسازیم و باینری اصلی رو بازیابی کنیم
چرا باید خودمون آنپکر بنویسیم؟
همه فایلها با ابزارهای آماده قابل آنپک نیستن (مثلاً نسخههای دستکاریشده یا سفارشیشدهی UPX)
در بعضی مواقع نیاز به خودکارسازی داریم (مثلاً اسکن دستهای)
این تمرین باعث میشه به درک عمیقتری از ساختار PE و مکانیزم اجرای ویندوز برسید
👍4👏1
شناسایی پکر
استفاده از ابزارهایی مثل:
PEiD
Detect It Easy
بررسی سکشنها ساختارهای غیرمعمول سایزهای عجیب و نام بخشها
استفاده از ابزارهایی مثل:
PEiD
Detect It Easy
بررسی سکشنها ساختارهای غیرمعمول سایزهای عجیب و نام بخشها
👍4👏1
پیدا کردن OEP (Original Entry Point)
اجرای فایل در دیباگر مثل x64dbg
گذاشتن Breakpoint روی APIهای کلیدی:
VirtualAlloc
WriteProcessMemory
GetProcAddress
یا حتی روی Entry Point خود فایل
دنبال کردن flow تا وقتی وارد کد unpack شده → اونجا OEP واقعی هست
اجرای فایل در دیباگر مثل x64dbg
گذاشتن Breakpoint روی APIهای کلیدی:
VirtualAlloc
WriteProcessMemory
GetProcAddress
یا حتی روی Entry Point خود فایل
دنبال کردن flow تا وقتی وارد کد unpack شده → اونجا OEP واقعی هست
👍4❤1
گرفتن Dump از حافظه
وقتی به OEP رسیدیم:
از ابزار Scylla یا x64dbg استفاده کنیم برای گرفتن Memory Dump
آدرسهای سکشنها و Import Table رو ذخیره کنید
وقتی به OEP رسیدیم:
از ابزار Scylla یا x64dbg استفاده کنیم برای گرفتن Memory Dump
آدرسهای سکشنها و Import Table رو ذخیره کنید
👍4❤1
انواع تکنیکهای رایج 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
توضیح کاربردها:بدافزارها برای پنهان کردن رفتار واقعیشون استفاده میکنن
توسعهدهندگان نرمافزارهای پولی برای جلوگیری از کرک
حتی گاهی برای مخفی کردن بخشی از منطق تجاری یا کد لایسنس استفاده میشه
👍4❤1