✅ چالش مهندسی معکوس CrackMe-v10
مهندسی معکوس فرایندی است که در آن عملکرد، ساختار یا رفتار یک نرمافزار یا سیستم را بدون دسترسی به کد منبع آن تحلیل و بازسازی میکنیم. هدف میتواند کشف منطق داخلی، درک پروتکلها، بازیابی الگوریتمها یا یافتن نقاط ضعف امنیتی باشد. دو رویکرد کلی در مهندسی معکوس و آنالیز برنامه وجود دارد:
🔹 تحلیل استاتیک: مطالعهٔ باینری و دادههای درون فایل بدون اجرای آن (مثلاً با دکامپلر، disassembler، خواندن بخشهای داده و نمادها). مناسب برای یافتن ساختارها، توابع و رشتهها.
🔹 تحلیل داینامیک: اجرای برنامه در محیط کنترلشده و دنبالکردن رفتار در زمان اجرا (دیباگر، tracing، مانیتورینگ syscalls). مناسب برای دیدن مقدارهای واقعی، مسیرهای اجرا و اثرات جانبی.
کاربردهای مهندسی معکوس در امنیت و حوزههای مرتبط عبارتند از:
✔️ کشف آسیبپذیریها (Vulnerability Research): تحلیل باینریها برای پیدا کردن باگها و اکسپلویتهای احتمالی.
✔️ تحلیل بدافزار (Malware Analysis): بررسی رفتار برنامههای مخرب، شناسایی تروجانها، و توسعهٔ راهکارهای مقابله.
✔️ تضمین کیفیت و سازگاری (Interoperability): درک پروتکلها یا فرمتهای اختصاصی برای ایجاد نرمافزارهای سازگار.
✔️ بازبینی لایسنس و رعایت قوانین (License Auditing): بررسی مکانیزمهای لایسنس و تضمین اینکه نرمافزار مطابق سیاستها رفتار میکند.
✔️ جرایم و دیجیتال فورنزیک (Forensics): بازیابی شواهد و تحلیل رفتار برنامهها پس از حادثهٔ امنیتی.
در این چالش شما فقط یک فایل متنی دریافت میکنید که خروجی disassembly بایتکد از یک تابع بررسی فلگ است.
در این خروجی، با دستورهایی مثل BINARY_SLICE (برش رشته)، BINARY_SUBSCR (دسترسی به اندیس)، و مقایسههای ord/chr روبهرو میشوید و تابع در صورت درست/غلط بودن شرطها، oops() یا yeayy() را صدا میزند.
هدف شما این است که منطق چککردن را از روی همین بایتکد بازسازی کنید و فلگ صحیح را پیدا کنید (فرمت فلگ از روی همان فایل قابل تشخیص است).