جمعه, ۸ تیر, ۱۴۰۳ / 28 June, 2024
مجله ویستا

مهندسی معکوس در آندروید


مهندسی معکوس در آندروید

در دنیای برنامه نویسی یکی از مهم ترین عوامل, نگهداری برنامه ها و اعمال تغییرات در کمترین زمان ممکن است

در دنیای برنامه‌نویسی یکی از مهم‌ترین عوامل، نگهداری برنامه‌ها و اعمال تغییرات در کمترین زمان ممکن است.

این عوامل شامل چند بخش می‌شود؛ بخش مهم و اساسی آن در نگهداری کد‌های برنامه و قابلیت توسعه‌پذیری برنامه است و بخش دیگر مربوط به ظاهر برنامه یا متن‌های به کار رفته در برنامه می‌شود.

در اینجا قصد داریم بگوییم شما چگونه می‌توانید یک برنامه آندرویدی را که توسط فرد یا شرکت دیگری توسعه پیدا کرده‌ است، تغییر دهید.

پیش از هر چیز به یاد داشته باشید که به عنوان برنامه‌نویس همواره از نوشتن Hard-Code خودداری کنید. با یک مثال Hard-Code یا کد سخت را توضیح می‌دهیم.

شما برنامه‌ای را توسعه داده‌اید. رشته متنی که برای ارتباط با پایگاه داده شما به کار می‌رود در کد شما ذخیره شده ‌است و هر بار که می‌خواهید با پایگاه داده ارتباط برقرار کنید، آن رشته را درون کد خود به صورت یک متن قرار می‌دهید. اما حساب کنید مشتری شما قصد تغییر سیستم پایگاه داده خود را دارد بنابراین شما نیاز دارید هر جا که از آن رشته متنی استفاده کرده‌اید، آن را تغییر دهید.

هر چه برنامه بزرگ‌تر باشد این رشته‌های متنی که قرار است تغییر کند، بیشتر می‌شود.

چگونه از این کار جلوگیری کنیم؟ برای این‌کار شما می‌توانید از فایل‌های Resource در کنار برنامه استفاده کنید تا در صورت تغییر، در کمترین زمان ممکن این کار را انجام دهید. ‌این منابع علاوه بر رشته‌ها می‌تواند شامل عکس‌های برنامه نیز بشود.

حالا قبل از این‌که سراغ تغییر در برنامه‌های آندروید برویم، ساختار برنامه‌ها را یک مرور کلی می‌کنیم. پروژه آندرویدی شامل یک فایل به نام Android.manifest است که اطلاعات اصلی برنامه را دربردارد. در تغییر آن باید به‌دقت عمل کنید.

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

ما اگر بخواهیم در منابع یک برنامه تغییراتی بدهیم، قطعا سراغ پوشه layout‌ می‌رویم؛ اما ما قرار است در برنامه‌ای که نوشته شده تغییرات ایجاد کنیم.

برنامه‌های آندروید که کامپایل می‌شود شامل یک‌سری فایل dex بوده که در واقع کامپایل شده کد جاوای شما برای ماشین مجازی Dalvik است و بقیه محتویات آن منابع و کتابخانه‌هایی را شامل می‌شود که شما از آن استفاده کرده‌اید.

فایل خروجی آن که در واقع فایل اجرای برنامه آندرویدی شماست به فرمت apk بوده که یک فایل zip و ساین شده، است.

دسترسی به محتویات این فایل با Extract‌کردن آن امکان‌پذیر است اما اگر بخواهید با Extract کردن، در برنامه آندروید خود تغییر ایجاد کنید، با مشکلات عدیده‌ای مواجه خواهید شد.

شما با استفاده از apk-tool که یک برنامه نوشته شده با جاواست، فایل‌های apk خود را باز و اصطلاحا Decompile کنید سپس تغییراتی که می‌خواهید در آنها بدهید و دوباره آنها را از اول build کنید. (توجه داشته باشید که این برنامه فقط منابع فایل را به شما می‌دهد و نمی‌تواند کد را Decompile کند).

شما می‌توانید برنامه را از این آدرس دانلود کنید:

code.google.com/p/android-apktool

نسخه ویندوزی آن شامل یک فایل bat است که کارکردن با آن را برای شما راحت می‌کند.

امیربهاءالدین سبط‌الشیخ