مهندسی معکوس برنامه های اندروید + آموزش

احتمالا در طی سال های اخیر، مهندسی معکوس برنامه های اندروید را زیاد شنیده اید. اما مهندسی معکوس چیست؟ چگونه کار میکند؟ و چه استفاده ای دارد؟ با ما همراه باشید تا پاسخ سوالات خود را بیابید.
مهندسی معکوس برنامه های اندروید (APK)
مهندسی معکوس چیست؟
مهندسی معکوس بر اساس نوع کاربرد و رشته ای که در آن استفاده میشود، ممکن است معنایش فرق کند که ما در این مقاله به بررسی مهندسی معکوس برنامه های اندرویدی میپردازیم. اما در کل واژه مهندسی معکوس به معنای زیر است:
- زمانی که پاسخ سوالی را داریم و میخواهیم به صورت سوال برسیم از مهندسی معکوس استفاده میکنیم.
- صورت سوال و همچنین پاسخ را داریم، اما فرایند رسیدن از سوال به پاسخ را نمیدانیم.
هدف از مهندسی معکوس، درک دانش و نوع طراحی یک محصول است که این کار برای ساخت و تولید مجدد آن محصول استفاده میشود.
به غیر از موارد بالا، اگر به دنبال پیدا کردن آسیب پذیری های برنامه اندرویدی هستید، مهندسی معکوس برای این کار مفید است. با استفاده از ابزارهای مختلف میتوانید بر روی نرم افزارهای اندرویدی تست نفوذ انجام دهید.
مهندسی معکوس برنامه های اندرویدی
تکنیک های مهندسی معکوس در برنامه های اندرویدی به معنای استخراج کردن کد منبع از یک برنامه با پسوند .apk است.
شاید در نگاه اول مهندسی معکوس یک برنامه اندرویدی سخت به نظر برسد؛ اما اگر با برنامه نویسی اندروید آشنایی داشته باشید، درک روش های مهندسی معکوس برایتان ساده است.
برای شروع بهتر است اول با برخی از ابزارهای مهندسی معکوس برنامه های اندرویدی آشنا شوید که در ادامه به توضیح آن ها میپردازیم.
ابزارهای مهندسی معکوس برنامه های اندرویدی
-
Apktools
با استفاده از این ابزار، میتوانید برنامه های اندرویدی را به صورت کامل رمزگشایی کنید و پس از ایجاد تغییرات دوباره آن را بازسازی کنید. این ابزار با محیط گرافیکی و نمایش پروژه محور فایل ها، کار مهندسی معکوس را بسیار ساده کرده است.
برای استفاده از این ابزار از آدرس زیر استفاده کنید.
-
Dex2jar
از این ابزار برای خواندن و نوشتن فایل های DEX استفاده میشود. به سادگی میتوانید این فایل ها را به class file تبدیل کرده و همه آن ها را پس از آرشیو کردن با فرمت jar دریافت کنید.
برای استفاده از این ابزار به سایت زیر مراجعه نمایید.
-
Androguard
این ابزار به زبان پایتون است. با استفاده از این ابزار، بر روی فایل های dex کنترل کامل دارید.
همچنین میتوانید برای آنالیز استاتیک کد و پیدا کردن بدافزارها موجود در آن استفاده کنید.
برای دانلود به سایت زیر مراجعه کنید.
-
Appknox
این ابزار برای تست نفوذ و امنیت استفاده میشود و ابزاری کامل و قدرتمند در این زمینه محسوب میشود.
میتوانید این ابزار را از سایت زیر دانلود کنید.
-
Virtualapk
Virtualapk فریم ورکی قدرتمند برای اجرای فایل های apk در دستگاه اندرویدی است. این فریم ورک قابلیت دسترسی به اکتیویتی ها، سرویس ها، رسیور ها، کلاس ها و همچنین آنالیز کدها را برای شما آسان میکند.
ازلینک زیر برای دانلود این ابزار استفاده کنید.
به غیر از این ابزارها، ابزارهای آنلاینی هم وجود دارد که میتوانید برای مهندسی معکوس برنامه های اندرویدی از آن ها استفاده کنید. مانند:
http://www.decompileandroid.com
http://www.javadecompilers.com/apk
شروع کار
برای اینکه نحوه کار مهندسی معکوس را متوجه شوید، در ادامه آموزشی ساده با استفاده از ابزار Apktool را برای شما توضیح داده ایم. پس با ما همراه باشید.
قبل از شروع کار مطمئن شوید JDK جاوا بر روی سیستم شما نصب است.
اگر بر روی سیستم وجود نداشت، JDK را از لینک زیر دانلود و نصب کنید.
https://www.oracle.com/java/technologies/javase-downloads.html
حال باید نرم افزار اندرویدی که میخواهید سورس آن را تغییر دهید، دانلود کنید. ما در این آموزش از نرم افزار Telegram استفاده کرده ایم.
پس از دانلود و نصب تمام نیازمندی ها برای مهندسی معکوس یا همان decompile کردن نرم افزار اندرویدی، کار خود را شروع میکنیم.
- نرم افزار اندرویدی که از قبل دانلود کرده اید را در پوشه ی ابزار Apktool قرار دهید.
- پسوند نرم افزار را از apk به zip تغییر دهید.
- روی فایل زیپ شده کلیک کنید. در بین تمام فایل ها، فایلی با نام dex مشاهده میکنید. (نرم افزار تلگرام دارای 3 فایل classes.dex است.)
برای تغییر سورس های نرم افزار، نیاز به این فایل داریم. چرا؟ زیرا تمام کدهایی که به زبان جاوا نوشته شده اند در این فایل قرار دارند.
نکته: فایل هایی با پسوند dex، فایل های کامپایل شده نرم افزارهای اندرویدی هستند.
مرحله 4 از مهندسی معکوس اندروید
- حال فایل dex را اکسترکت میکنیم.
- میتوانیم اسم فایل ها را تغییر دهیم تا برای ما خواناتر باشد. حال فایل ها را در پوشه dex2jar قرار دهید.
اگر این فایل را با notepad باز کنید، چیزی جز حروف عجیب غریب و نامفهوم نمیبینید. اما برای دیدن کدها، ادامه مراحل را انجام دهید.
- حال برای دیدن کدها، در بین فایل هایی که در پوشه dex2jar وجود دارد، فایلی به اسم bat را پیدا کنید.
- cmd را باز کنید و دستورات زیر را اجرا کنید.
ابتدا وارد مسیری شوید که پوشه ابزار Apktool در آن وجود دارد.
اینجا مسیر C:\Users\User\Desktop\Apktool – dex2jar\dex2jar است. یعنی در محیط cmd باید وارد این مسیر شویم.
- میخواهیم با استفاده از فایل bat کدها را قابل خواندن کنیم. با استفاده از دستورات زیر این کار را انجام میدهیم.
ابتدا dex2jar.bat را مینویسیم و سپس فایلی را که پسوندش dex است را جلوی آن مینویسیم.
پس از زدن اینتر باید نتیجه زیر را مشاهده کنید.
- حال فایل زیر که در پوشه dex2jar است را اجرا کنید.
- فایل jar را در این نرم افزار درگ میکنیم.
در نهایت شما به تمام سورس های نرم افزار تلگرام دسترسی دارید و میتوانید تغییراتی که دوست دارید را اعمال کنید.
در نهایت
شما میتوانید به سورس های هر نرم افزار اندرویدی که دوست دارید، دسترسی پیدا کنید و تغییراتی را اعمال کنید. بهتر است از مهندسی معکوس برای ایده گرفتن، درک کردن کدها و… استفاده کنید.
امیدوارم از این آموزش لذت برده باشید.
۷ دیدگاه در “مهندسی معکوس برنامه های اندروید + آموزش”
سلام من apk tools رو دانلود کردم ولی محتویاتش با اون چیزی که شما نشون دادین فرق داشت
درود
منظورتون محتوا خود ابزار هست یا Apk، اگر Apk منظورتون هست هر برنامه ممکن است متفاوت باشد اما اگر خود ابزار منظورتون هست از لینک قرار داده شده استفاده کنید.
سلام منم ابزار رو از لینکی که گذاشته بودین دانلود کردم ولی پوشه dex2jar رو شما چطوری آوردین؟
تنها فایلی که دانلود شد apktool_2.4.1.jar این بود.
درود
لینک دانلود dex2jar داخل اموزش قرار دارد که باید دانلود کنید.
سلام چجوری با نرم افزار JD-gui کدها رو ویرایش کنیم همچین قابلیتی نداره.
درود
طبق اموزش پیش بروید.
سلام ، برای اینکه دوره مهندسی معکوس رو بهتر متوجه بشیم ، پیش نیاز این دوره چیه؟