داخل زبان های خانواده C (به طور خاص C و ++C) ، برای سخت تر کردن پروسه مهندسی معکوس ، یه نکته ساده امنیتی اینه که توابع مهم امنیتی مثل چک کردن کلید سریال ، بررسی وجود دیباگر و .... رو به صورت inline تعریف کنید .
دلیلشم اینه که اگر مثلا شما ۵ جای برنامتون یکی از این توابع رو صدا میزنید ، اگه تابع رو به صورت عادی و بدون inline تعریف کرده باشید کامپایلر داخل هر کدوم از اون ۵ نقطه یک دستور فراخوانی (CALL) به تابع مورد نظر قرار میده .
کسی که داره مهندسی معکوس میکنه کافیه اون تابع مورد نظر رو پیدا کنه و خنثی کنه . اینجوری هر ۵ تا نقطه ای که به اون تابع فراخوانی میزدن از کار میافتن . این مثل یه جور نقطه شکست مرکزی تو سیستم میمونه (Single Point of Failure) .
اما در صورتی که تابع رو inline تعریف کرده باشید , تو هر کدوم از اون ۵ نقطه ای که تابع رو فراخوانی کردید ، کامپایلر دقیقا کد اون تابع مورد نظر رو عینا قرار میده و هیچ فراخوانی تابعی انجام نمیشه . اینجوری کسی که داره مهندسی معکوس میکنه برعکس مورد قبلی باید ۵ نقطه متفاوت از برنامه رو خنثی کنه .
خب قطعا این تکنیک میتونه باعث افزایش حجم کد بشه ولی گاهی اوقات بصرفه است .
🆔 : @mrpythonblog
یه چیز دیگه ایم که به ذهنم خورد این بود که با مهندسی معکوس منطق بازی رو جوری تغییر بدم که بعد از ۸ تا حرکت درست سایز کاشی ها بزرگ نشه . اگه میشد اینکارو کرد عالی میشد و ربات ما هیچوقت متوقف نمیشد .
فایل apk بازی رو ابزار apktool استخراج کردم (خود فایل های apk یه جور فایل فشرده و آرشیو شدس) و دیدم که فایلایی مثل libunity.so داخلشه . این به این معنیه که بازی با موتور بازی سازی unity ساخته شده
شما بازی هایی که با یونیتی ساخته شدن رو نمیتونید مستقیما با ابزار هایی مثل jadx دیکامپایلشون کنید به سورس کد جاوا چون اینکار نهایتا کدی رو به شما میده که مربوط به خود موتور یونیتیه نه منطق واقعی بازی . یونیتی کد واقعی بازی که برنامه نویسش نوشته رو در قالب یکسری فایل کتابخونه ای توی apk خروجی جا میده و بعد حین اجرا کد های اونو اجرا میکنه . یونیتی تا اونجایی که میدونم به دو حالت میتونه کد های بازی رو در فایل apk قرار بده . حالت اول اینه که کد بازی که داخل خود موتور یونیتی به زبان c sharp نوشته شده رو به بایت کد (زبان میانی سی شارپ که توسط runtime های چارچوب دات نت قابل اجراست) تبدیل میکنه و حین اجرای بازی از ابزار mono برای اجرا کردن اون بایت کد استفاده میکنه (mono یه پیاده سازی از چارچوب دات نته اگه اشتباه نکنم که میتونه بایت کد سی شارپ رو اجرا کنه)
این یه حالت اجرای کد توسط یونیتی بود . یه حالت جدیدترش استفاده از ابزار il2cpp هست . این ابزار میاد کدی که برنامه نویس نوشته رو به کد اجرایی native همون پلتفرمی که بازی قراره روش اجرا بشه تبدیل میکنه (مثلا arm) و دیگه برای اجراش نیازی به mono نیست .
بازی استک از حالت دوم یعنی il2cpp استفاده کرده بود چون داخل فایل های استخراج شدش ، libil2cpp.so هم وجود داشت .
ابزار هایی هستند مثل il2cppInspector که میتونن بازی هایی که با روش il2cpp ساخته شدن رو تحلیل کنن و نهایتا به وسیله ی اطلاعاتی که به شما میدن میتونید این بازی هارو دیکامپایل کنید تا حد زیادی .
بازم مشکل وجود داشت و این بود که این ابزار هایی که گفتم نتونستن آخرین نسخه بازی استک رو دیکامپایل کنن و ارور میدادن . نمیدونم شاید obfuscate کردن کدشو یا اینکه اون ابزار ها هنوز خودشونو آپدیت نکردن . به هرحال این از مشکلات بچه اسکریپتی بودن تو یه کاریه 😅 ،
ولی رو نسخه های قدیمی تر بازی انگار تست کردم میشد یه کارایی کرد و دیگه با این ارور ها رو به رو نبودیم ولی خب هنوز کاملش نکردم . اگه مشکلی نبود و حل شد مشکل یه پست ازش میزاریم رو وبسایت
اگه تو این زمینه تجربه دارید به خصوص رو خود همین بازی خوشحال میشم راهنمایی کنید
🔴 آموزش پایتون - قسمت 28
در قسمت 28 به معرفی چند کتابخونه نسبتا پراستفاده در پایتون میپردازیم تا یاد بگیریم چطوری باید از کتابخونه ها استفاده کرد .
Weblog : https://mrpython.blog.ir/post/197
Aparat : https://www.aparat.com/v/ar0LW
🆔 : @mrpythonblog
🔴 آموزش پایتون - قسمت 23
در قسمت 23 به بررسی فضای نام (namespace) در اشیاء میپردازیم .
Weblog : https://mrpython.blog.ir/post/192
Aparat : https://www.aparat.com/v/UsHYx
🆔 : @mrpythonblog
من میکروفونم خراب شده ظاهرا اینو با میکروفون گوشیم گرفتم کیفیت صداش پایین تر از قبلیاس . انشاءالله که مشکلی نیست
جنس فیک همینه 🥸
سلام و درود
پستی که هم اکنون ارسال میشه اولین پست از مجموعه توسعه بدافزارمونه
مطالب این مجموعه برگرفته و ترجمه شده از پست های وبلاگ cocomelonc.github.io هستش .
اکثر پست ها درک نسبتا خوبی از زبان سی به عنوان پیشنیازش خواهد شد .
همه ی پست های این مجموعه در دسته "توسعه بدافزار" در وبسایت مسترپایتون منتشر خواهد شد
دلیل کم فعالیتی این چند وقت همین بود که درگیر کارای سایت بودیم . انشاءالله از این به بعد به خوبی ادامه میدیم .
ممنون که مارو از حمایت های خودتون محروم نمیکنید
دوره جدید قراره شروع کنیم و اونم تست نفوذ شبکه با پایتون (با محوریت ابزار نویسی) هستش . تو این دوره با کتابخونه هایی مثل اسکپی کار میکنیم و تعداد زیادی از ابزار های تست نفوذ شبکه رو داخلش پیاده سازی میکنیم
برای پست بعدی هم احتمالا یه پست مهندسی معکوس داشته باشیم .
🔴 آموزش پایتون - قسمت 29
در این قسمت میبینیم چطوری میشه Exception های دلخواه خودمون رو داخل پایتون تعریف کنیم و از اونا استفاده کنیم .
Weblog : https://mrpython.blog.ir/post/198
Aparat : https://www.aparat.com/v/QJPx7
🆔 : @mrpythonblog
🟢 شل معکوس (Reverse Shell)
مفهوم پوسته معکوس ، در واقع نوعی دسترسی به سیستم مورد هدف توسط هکر است که در آن خود سیستم هدف به هکر وصل میشود . به عبارتی سیستم هدف به سیستم هکر که در حال شنود است متصل میشود و یک دسترسی shell از خود در اختیار هکر میگذارد . هکر از طریق این shell میتواند دستورات دلخواه خود را روی سیستم هدف به اجرا در بیاورد .
https://mrpythonblog.ir/reverse-shells
#MalwareDevelopment #ReverseShells
🆔 : @mrpythonblog
🟢 تزریق کد کلاسیک (Code Injection)
تزریق کد (code injection) به سادگی یعنی وادار کردن یک پروسه دیگر به اجرای کد دلخواه ما . به عبارتی طی این فرایند ، یک پروسه (بد افزار) کد دلخواه خود را به پروسه ای دیگر تزریق کرده و موجب اجرای کد توسط پروسه هدف میشود .
https://mrpythonblog.ir/classic-code-injection
#MalwareDevelopment #CodeInjection
🆔 : @mrpythonblog
🟣 پیاده سازی APC Injection در C
تکنیک APC Injection یکی دیگر از روش های تزریق و اجرای کد در پروسه های دیگر است . در این پست به بررسی اینکه APC در ویندوز چیست و چگونه بدافزار ها از آن برای تزریق کد استفاده میکنند میپردازیم
https://mrpythonblog.ir/apc-injection
#MalwareDevelopment
🆔 : @mrpythonblog
🟢 تکنیک DLL Hijacking
در این قسمت به بررسی تکنیک DLL Hijacking میپردازیم . این تکنیک برای مقاصدی مثل ماندگاری (Persistence) ، افزایش سطح دسترسی (Privilege Escalation) و یا عبور از مکانیزم های امنیتی استفاده میشود .
https://mrpythonblog.ir/dll-hijacking
#MalwareDevelopment #CodeInjection
🆔 : @mrpythonblog