uk
Feedback
ReverseEngineering

ReverseEngineering

Відкрити в Telegram
1 265
Підписники
Немає даних24 години
-37 днів
+730 днів
Архів дописів
کتاب The IDA Pro Book یکی از بهترین منابع برای یادگیری مهندسی معکوس با IDA Pro هست توی این کتاب یاد می‌گیرید که چطور کدهای باینری و اسمبلی رو تحلیل کنید ساختار یه برنامه رو بشناسید مکانیزم‌های ضد مهندسی معکوس رو دور بزنید و حتی بدافزارها رو بررسی کنید چرا این کتاب مهمه؟ چون IDA Pro یکی از قوی‌ترین ابزارهای مهندسی معکوسه و این کتاب قدم‌به‌قدم بهت یاد میده بهتون که چطور ازش استفاده کنید از رابط کاربری و اسکریپت‌نویسی گرفته تا دیباگ کردن و تحلیل نرم‌افزارها اگه ردتیمینگ کار می‌کنید و دنبال اینید که بفهمید برنامه‌ها چطور از مهندسی معکوس محافظت می‌شن

📌 ابزارهای دی‌کامپایل و بازگردانی سورس‌کد اگه برنامه‌ای به زبان‌های سطح بالا مثل C#، Java یا Python نوشته شده باشه می‌تونی سورس‌کدش رو برگردونی 🔹 dnSpy / ILSpy → دی‌کامپایلر برای برنامه‌های دات‌نت (C# و VB) 🔹 JADX / Bytecode Viewer → دی‌کامپایلر برای برنامه‌های اندروید (APK) 🔹 Ghidra (با پلاگین‌های decompiler) → دی‌کامپایلر برای باینری‌های کامپایل‌شده 🔹 Decompiler.com → یه سرویس آنلاین برای دی‌کامپایل زبان‌های مختلف 💡 وقتی بخوای ببینی یه برنامه‌ای که به زبان Java یا C# نوشته شده، چه کدی داره

تحلیل ساختار فایل‌های 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 استفاده میشه

دوستان برای بار هزارم لطفا تا میتونید کانال رو share کنید تا انگیزه ای هم باشه برای من که بتونم ادامه بدم تنها کمکی که از دستتون برمیاد همینه منم سعی میکنم بهترین و اپدیت ترین محتوا رو براتون بزارم دمتون گرم که هستید دوستون دارم🫶🏼❤️‍🔥

کتاب Practical Binary Analysis نوشته Dennis Andriesse یکی از منابع عالی برای یادگیری مهندسی معکوس، تحلیل باینری و امنیت نرم‌افزار است این کتاب به‌طور عملی و از پایه تحلیل باینری رو توضیح میده و به موضوعاتی مثل دیس‌اسمبلی دیباگینگ مهندسی معکوس و تحلیل آسیب‌پذیری‌ها رو میگه موضوعات کلیدی کتاب: مقدمه‌ای بر معماری کامپیوتر و پردازنده‌ها کار با ابزارهای دیس‌اسمبلر و دیباگر مهندسی معکوس برنامه‌های کامپایل‌شده تحلیل باینری‌ها بدون نیاز به سورس‌ کد مفاهیم امنیتی مثل اکسپلویت‌نویسی و بایپس مکانیزم‌های حفاظتی

ابزارهای آنپکینگ و بایپس Obfuscation خیلی از برنامه‌های پولی و بدافزارها پک یا مبهم‌سازی (Obfuscation) میشن تا مهندسی معکوسشون سخت بشه این ابزارها کمک می‌کنن که اون‌ها رو آنپک کنید UPX  یه ابزار رایج برای فشرده‌سازی و آنپک کردن فایل‌ها Detect It Easy (DIE)  تشخیص پکینگ و کامپایلرهای فایل‌های اجرایی x64dbg (با پلاگین Scylla)  آنپک کردن فایل‌های پک‌شده Unpacker.me  یه سرویس آنلاین برای آنپک کردن بعضی باینری‌ها وقتی برنامه‌ای که داری بررسی می‌کنی کدش به نظر عجیب و مبهم میاد یا وقتی اجرا میشه خودش رو از حالت فشرده خارج می‌کنه

ساختار فایل 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 استفاده میشه

photo content

ChaCha20 or Salsa20 یک الگوریتم رمزنگاریه که برای امنیت بالا و سرعت زیاد طراحی شده باهاش میشه داده‌ها رو رمزگذاری کرد تا کسی بدون کلید نتونه بخونه این الگوریتم جایگزین خوبی برای AES هست مخصوصاً توی موبایل‌ها و پردازنده‌هایی که سخت‌افزار مخصوص رمزنگاری ندارن چطوری کار می‌کنه؟ ChaCha20 یه جور رمزنگاری جریانیه، یعنی داده‌ها رو دونه‌دونه رمز می‌کنه نه به‌صورت بلوک‌های بزرگ ورودی‌هاش چیه؟ یه کلید 256 بیتی همون رمز اصلی یه مقدار تصادفی Nonce برای جلوگیری از تکراری شدن رمزها یه شمارنده که توی هر بلاک تغییر می‌کنه چی کار می‌کنه؟ چند تا عملیات ریاضی ساده مثل جمع XOR و چرخش بیتی روی داده‌ها انجام میده این عملیات 20 بار تکرار میشه تا یه سری اعداد تصادفی قوی تولید کنه این اعداد با متن اصلی ترکیب میشن و داده‌ی رمزگذاری‌شده تولید میشه چرا از ChaCha20 استفاده کنیم؟ سریع‌تره چون نیاز به محاسبات پیچیده‌ی AES نداره امنیت بالایی داره و در برابر حملات رمزنگاری مقاومه روی موبایل و دستگاه‌های کم‌قدرت بهتر کار می‌کنه، چون نیاز به سخت‌افزار خاصی نداره در برابر حملات جانبی مثل حملات کش CPU امن‌ تره کجاها ازش استفاده میشه؟ توی HTTPS امن کردن اینترنت توی WireGuard VPN برای اتصال امن توی OpenSSH برای ارتباطات رمزگذاری‌شده توی Google QUIC که اینترنت رو سریع‌تر و امن‌تر می‌کنه

https://gchq.github.io/CyberChef یک ابزار خوب برای تست رمزنگاری ها

دوستان حمایت کنید کانال رو دمتون گرم 🫶🏼🙏🏻

تحلیل ساختار فایل‌های اجرایی PE در ویندوز باید بدونید که فایل‌های اجرایی (EXE، DLL و...) چجوری ساخته میشن و چطور داخل حافظه لود میشن چون مهندسی معکوس بیشتر روی این فایل‌ها انجام میشه فهمیدن ساختارشون خیلی مهمه فرمت‌های مختلف فایل‌های اجرایی وقتی یه برنامه رو توی ویندوز یا لینوکس اجرا میکنید اون فایل اجرایی توی حافظه لود میشه فایل‌های اجرایی توی سیستم‌عامل‌های مختلف فرمت‌های متفاوتی دارن: PE (Portable Executable) → مخصوص ویندوز ELF (Executable and Linkable Format) → مخصوص لینوکس و اندروید Mach-O → مخصوص macOS و iOS 2. ساختار فایل PE در ویندوز (EXE و DLL) هر فایل اجرایی در ویندوز یه فرمت استاندارد به اسم PE (Portable Executable) داره این فرمت برای EXEها و DLLها استفاده میشن ساختار کلی یک فایل PE : | DOS Header | اطلاعات ابتدایی (شاملMZ Signature) | | PE Header | اطلاعات کلی فایل اجرایی | | Section Table | فهرست سکشن‌های فایل (کد، داده، منابع و ...) | | Sections | بخش‌های مختلف برنامه (کد اسمبلی، داده‌ها و ...) | با ابزار CFF Explorer یا PEview میتونید این اطلاعات رو ببینید بخش‌های مهم در فایل PE 1 DOS Header: اولین قسمت فایل PE هست و همیشه با MZ Signature شروع میشه این بخش قدیمیه و برای سازگاری با DOS استفاده میشه 2 PE Header (NT Headers): این قسمت شامل اطلاعات کلی درباره فایل اجراییه مثل: نوع پردازنده (32 یا 64 بیت) تعداد سکشن‌ها آدرس نقاط ورود (Entry Point) 3 Section Table (جدول سکشن‌ها): فایل PE به چند سکشن (بخش) تقسیم میشه. هر سکشن یه هدف خاص داره: توی مهندسی معکوس معمولا کد مخرب یا مکانیزم‌های کرک در سکشن .text یا .data قرار دارن 4 Import Table (جدول ایمپورت‌ها): این جدول نشون میده که برنامه از کدوم DLLها و APIها استفاده میکنه برای مهندسی معکوس خیلی مهمه چون می‌تونی بفهمی که یه برنامه چجوری کار می‌کنه 5 Entry Point : این آدرسیه که برنامه از اونجا اجرا میشه توی دیباگر (مثلاً x64dbg) این نقطه همونجاییه که اولین دستور اسمبلی اجرا میشه

ابزارهای بررسی و ویرایش فایل‌های اجرایی این ابزارها برای بررسی و تغییر فایل‌های PE (ویندوز) و ELF (لینوکس) استفاده میشن 🔹 PE-bear → نمایش ساختار فایل‌های PE و ویرایش اون‌ها 🔹 LordPE → استخراج توابع و اطلاعات PE 🔹 CFF Explorer → بررسی هدرهای فایل PE و تغییر مشخصات اون وقتی بخوایم بفهمیم یه فایل اجرایی چجوری ساخته شده یا مثلا یه امضای دیجیتال رو ازش حذف کنیم

این کتاب شامل تمرین‌ها و راه‌حل‌هایی با ویروس‌ها و روت‌کیت‌های واقعی و مخربه نویسندگان این کتاب عمدا این کار رو انجام دادن تا اطمینان پیدا کنن که خوانندگان می‌تونن فورا مهارت‌های که یاد گرفتن خودشون استفاده کنن نمونه‌های بدافزار به ترتیب حروف الفبا (نمونه A، B، C، …) انواع معماری رو هم میگه Arm x64 x86