آموزش پورت برنامه های شرکتی(آنالیز و عیب یابی)

استاندارد

با سلام

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

آموزش پورت برنامه های شرکتی

 

از لینک بالا می تونید آموزش پورت برنامه را ببینید

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

  1. کم بودن کتابخانه های فریمورک
  2. ناقص بودن فایلهای so.
  3. متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد

از روشهای زیر برای رفع اشکال استفاده کنید

کم بودن کتابخانه های فریمورک

شما باید به فایل AndroidManifest.xml نگاه کنید تا ببینید چه فریمورکهای نیاز دارید

به عکس زیر دقت کنید

همانند علامتی که بالا زدیم طبق نام از مسیر system/framework و مسیر system/etc/permissions فایلها را کپی کنید به مسیری که درست کردید برای برنامه

ناقص بودن فایلهای so.

اینجا کمی سخت بفهمیم که برنامه چه فایلهای so. نیازی دارد

باید logcat را نصب  و عیب یابی کنید

مثلا ligcat چنین خطایی میزنه

can’t find class libUXVisualizer

در اینجا شما در مسیر system/lib باید فایل libUXVisualizer.so به رامی که می خواهید پورت کنید انتقال دهید

متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد

فاکتورهای زیادی باعث کرش برنامه می شوند

در مثال ما برنامه سونی بیشتر با اشکال GetString مواجه می شوند

خطاهای مانند زیر

بعد از دیدن این log چه باید بکینم؟

  1. برنامه را با استفاده از framework-res.apk دیکامپایل کنید
  2. به مسیر smali/com/sonyericsson/metadatacleanup/util/ بروید
  3. فایل StorageManagerIf.smali را باز کنید
  4. خط 262 را پیدا کنید

  1. فایل framework-res.apk  خودتان را دیکامپایل کنید
  2. به مسیر res/value/ بروید
  3. فایل Public.xml را باز کنید
  4. طبق StorageManagerIf.smali در خط 262 یک کد مشابه هست
const-string v2, "storage_internal"

پس storage_internal را در Public.xml خود جستجو کنید

کد زیر را نیز کپی کنید برای تغییر

const-string v2, "storage_internal"

    invoke-direct {p0, v1, v2}, Lcom/sonyericsson/metadatacleanup/util/StorageManagerIf;->getString(Landroid/content/res/Resources;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

برای کوچک کردن کد

const v2, 0x10405ad

در آخر کد شبیه زیر می شود

.line 262
    .local v0, "description":Ljava/lang/String;
    const v2, 0x10405ad

    if-eqz v2, :cond_0

در logcat خطاهای زیادی ممکن بوجود بیاد باید مثل بالا دنبال فایلها باشید و کدها را تغییر بدید

وقتی تمام شد فایلها را ریکامپایل ساین و ذخیره کنید

هرگونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد