امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

مهندسی معکوس چیست و ابزارهای آن کدامند

امروزه یکی از داغ ترین و قدرتمند ترین زمینه های امنیت سایبری مبحث مهندسی معکوس(Reverse Engineering) می‌باشد. اگر بخواهیم مفهوم و فرآیند مهندسی معکوس را توصیف کنیم و توضیح دهیم می‌توانیم به این شکل بیان کنیم که مهندسی معکوس یعنی پی بردن به معماری و پشته یک سخت افزار ویا نرم افزار. حال ممکن است برایتان سوال شود که فرایند مهندسی معکوس به چه صورت است؟ ابتدا میبایست شواهد و اساندی در رابطه با یک نرم افزار خاصی که میخواهید آنرا مهندسی معکوس کنید داشته باشید اگر نه می‌بایست با بررسی فرآیند کار نرم افزار و جمع آوری اطلاعات در رابطه با آن به شواهد و اسناد مورد نظر دست یابید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

چه زمانی به مهندسی معکوس احتیاج پیدا خواهیم کرد؟

انواع دلایل مختلف و متعددی برای اینکار وجود دارد که چندتا از این دلایل عبارتند از:

  • بررسی ارتباطات و روش برقراری ارتباطات پروتکل‌ها
  • بررسی و کشف الگوریتم بد افزار ها،باج افزار ها، تروجان ها و ویروس ها
  • بررسی توانایی نرم افزار دربرابر مهندسی معکوس نرم افزار
  • بهبود کارایی نرم افزار برای سازگاری آن با سیستم عامل و نرم افزار های شخص ثالث

پیش نیاز شروع مهندسی معکوس

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

دانش تئوری مهندسی معکوس

داشتن دانش تئوری در رابطه با مهندسی معکوس میتواند در اکثر زمینه مهندسی معکوس به‌کارتان آید زیرا اکثر مباحث در زمینه های مختلف مهندسی معکوس به صورت مشترک می‌باشند. از جمله از این دانش‌های نظری داشتن تسلط بر روی زبان های برنامه نویسی(ترجیحا زبان های همچون C و Assembly) داشتن تسلط بر روی Compiler ها و داشتن دانش متداول در رابطه با ساختار نرم افزار

بهترین نرم افزار های مهندسی معکوس نرم افزار کدامند؟

خب حال شاید برای شما سوال شود که متداول ترین نرم افزار های که توسط افرادی که در زمینه مهندسی معکوس نرم افزار فعالیت دارند استفاده می‌شود کدامند و هرکدام چه کاربردی را برای افراد فراهم می‌سازند

اولین نرم افزار: ApkTool

این نرم افزار جزوه شناخته شده ترین و معروف ترین نرم افزار های Decompile سازی نرم افزار های اندرویدی می‌باشد و کافیست نرم افزار را به آن بدید تا به طور کامل به تمامی Source-Code آن دسترسی پیدا کند.
برای استفاده از این نرم افزار به عنوان Decompile سازی Source نرم افزار های اندرویدی می‌بایستی بدین شکل از آن استفاده کنید

apktool d TargetFile.apk

مهندسی معکوس چیست و ابزارهای آن کدامند

دومین نرم افزار: OllyDbg

یکی از بهترین نرم افزار ها در زمینه آنالیز نرم افزار ها و مهندسی معکوس آن‌ها می‌باشد که قابلیت های بسیار زیادی را از حمله Assembler سازی کد ها برای بهترین جلو بردن فرایند، امکان اجرای Script های متنوع همچون Mona.py‌، بهترین نرم افزار برای استفاده مهندسی معکوس سازی نرم افزارهای که Source آن‌ها دردسترس نیست همچنین در زمینه شکستن لایسنس نرم افزارها نیز میتواند نرم افزار بسیار قدرتمندی باشد.
برای اینکه بتوانید یک نرم افزار را در آن اجرا سازید می‌باشد از قسمت زرد رنگ بالا سمت چپ نرم افزار مورد نظرتان را اجرا سازی کنید

مهندسی معکوس چیست و ابزارهای آن کدامند

سومین نرم افزار: Dex2jar

فایل های با فرما Apk یا فایل های نصبی اندرویدی اصولا هیچ چیز خاصی نیستند جز یک فایل با فرمت Zip و اگر شما فرمت آنرا به Zip تقییر دهید راحت میتوانید محتویات درون آن را استخراج سازید، ولی با اینکار نمیتوانید به Source نرم افزار دستیابید اما در هنگام اینکار فایلی را میبینید تحت عنوان Class.dex که تمامی Source نرم افزار اندرویدی در آن قرار دارد. نرم افزار Dex2jar همانطور که از اسم آن هم میتوان حدس زد یک نرم افزار می‌باشد که فایل های .Dex یا همان Class.dex را استخراج سازیم و به فرمت Jar تبدیل کنیم که راحت تر به Source دستیابیم.
نحوه استفاده از این نرم افزار بدین شکل است که ابتدا مسیر فایل Class.dex را معرفی می‌کنید

مهندسی معکوس چیست و ابزارهای آن کدامند

پس از آن Enter کرده و مسیر فایل .Jar جدید ایجاد شده را به شما نمایش می‌دهد

مهندسی معکوس چیست و ابزارهای آن کدامند

حال خیلی راحت با یک File Manger میتوانید آن‌را ببینید در مسیر مورد نظر

مهندسی معکوس چیست و ابزارهای آن کدامند

چهارمین ابزار: JD-GUI

پس از استخراج سازی Source از Class.dex و تبدیل آن به فایل های .Jar می‌بایستی که آن با بازکنیم و بتوانیم به طور کامل به آن دسترسی داشته باشیم، اینجاست که نرم افزاری تحت عنوان JD-GUI به روی کار می‌آید که اینکار را برایمان انجام دهد. البته این نرم افزار توانایی نمایش Source فایل های .Class را نیز دارد. برای کار با آن می‌بایست از آیکون پوشه بالا سمت چپ استفاده کرده و فایلاتان را انتخاب سازید و آنرا اجرا کنید

مهندسی معکوس چیست و ابزارهای آن کدامند

نویسنده: امیرحسین تنگسیری نژاد


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات