တခါတရံတဦးတည်းကြည့်ဖို့လိုသည်, နှင့်အဘယ်သို့ဆိုင်မျိုးကိုတိကျတဲ့အစီအစဉ်တွင်ဖြည့်စွက်၏? ထို့နောက်သူတစ်ဦးပြောင်းပြန်-အင်ဂျင်နီယာသုံးစွဲဖို့ရှိပါတယ်။ ဒါဟာဘာလဲ? ဘယ်လိုအလုပ်လုပ်သလဲ, ဘယ်လိုဤလုပ်ငန်းစဉ်ဖြစ်သနည်း ဤအမှုအလုံးစုံတို့ကိုသင်သည်ဤဆောင်းပါးကနေလေ့လာသင်ယူပါလိမ့်မယ်။
တစ်ပြောင်းပြန်-အင်ဂျင်နီယာအစီအစဉ်များကဘာလဲ?
အနာဂတ်၌လိုအပ်သောအပြောင်းအလဲများအောင်နေဖြင့်ဤဖြစ်စဉ်ကိုထပ်ဖွဒါမှဒါကြောင့်ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာကိုနားလည်နိုင်ရန်အတွက်လုပ်ငန်းစဉ်ကိုလျှောက်လွှာခွဲခြမ်းစိတ်ဖြာတောင်းဆိုခဲ့သည်။ များသောအားဖြင့်ဒီရည်ရွယ်ချက် debugger နဲ့စည်းဝေးများအတွက်အသုံးပြုခဲ့သည်။ အသုံးပြုတဲ့ software ကို၏အရည်အသွေးပေါ် မူတည်. ကွဲပြားခြားနားဖြစ်နှင့်ရလဒ်ပုံမှန်ပုံစံသွင်းဖို့ကသုံးစွဲသင့်ကြောင်းအချိန်ပမာဏကိုဖြစ်ပါတယ်လိမ့်မယ်။ အရင်ကဆိုရင်များအတွက်အကောင်းဆုံးဥပမာပြောင်းပြန်-အင်ဂျင်နီယာရှင်းပြပါ။ အဖြစ်၎င်း Android အတွက်စာဖြင့်ရေးသားကာလျှောက်လွှာလုပ်ဆောင်။ အခုအဘယျသို့နှင့်မည်သို့ထွက်ရှာခံရကြမည်။
အန်းဒရွိုက်-applications များနှင့်အလုပ်လုပ်
ပထမဦးစွာငါတို့သည်အချို့သောအချက်များရှင်းလင်းဖို့လိုအပ်ပါတယ်။ ဒီ application ဟာ bytecode နှင့် LogCat အသုံးပြုသည်။ ဤသည်ဒေသခံ counterparts တွေကိုယခင်က debugger နဲ့စည်းဝေးဖော်ပြခဲ့တယ်။ ဒါဟာ applications များသူတို့ကိုယ်သူတို့များ၏ဖွဲ့စည်းတည်ဆောက်ပုံကိုနားလည်သဘောပေါက်ရန်လည်းလိုအပ်ပေသည်။ ထို့ကြောင့်တစ်ဦးချင်းစီအစီအစဉ်ကိုတိုးချဲ့ apk တွေနဲ့ဖိုင်တစ်ခုဖြစ်ပါတယ်။ သူ zip'om ထုပ်ပိုး။ လျှောက်လွှာအရင်းအမြစ်များ, classes.dex နှင့် AndroidManifest.xml - ကျနော်တို့သူ့ရဲ့အကြောင်းအရာတွေကိုစိတ်ဝင်စားဖြစ်ကြသည်။ သငျသညျကို Android ပေါ်မှာ programming ကိုပြုလျှင်ယခင်နှင့်အဆုံးစွန်သောအတူဆိုင်ရာကိစ္စရပ်များမဖြစ်သင့်ပါတယ်။ သို့သော် classes.dex - က virtual machine တဘို့အထူးပြုစုသောဤအစီအစဉ်ကိုက byte code ။ အင်တာနက်ပေါ်ရှိရရှိနိုင်ပါကသူ၏ java source code ကိုကနေ Extract အဆိုပါရန်ပုံငွေများကိုမရကြဘူး။ သို့သော်ထိုသို့ Dalvik opcodes ရရှိရန်ဖြစ်နိုင် - က virtual machine တအတှကျအသုံးပွုဖြစ်ကြောင်းပညတ်တော်တို့ကိုတစ်ဦးကိုအထူးအစုံ။ တစ်ဦးနှိုင်းယှဉ်မယ်ဆိုရင်ငါတို့သည်ဒေသခံရေလွှမ်းမိုး၏ဤပရိသတ်သည်ဟုဆိုနိုငျသညျ။ Classes.dex ကိုလည်းအိုးတလုံးနှင့်အတူဖိုင်တစ်ဖိုင်သို့ကူးပြောင်းနိုင်ပါတယ်။ တောင်မှထိုကဲ့သို့သောအမှု၌, သင်ပိုမိုသို့မဟုတ်လျော့နည်းဖတ်လို့ရအောင်ဖြစ်လတံ့သောပစ်စညျးမြားပြီးနောက် java-code ကိုရနိုင်သည်။ ဒါကကြှနျုပျတို့သညျသှားလမ်းကြောင်းဖြစ်ပါတယ်။
ကျပစ်စညျးမြား
ဤလုပ်ငန်းစဉ် Apk နွားစားခွက်အစီအစဉ်ကိုသုံးပြီးထွက်သယ်ဆောင်ပါလိမ့်မည်။ သငျသညျစတင်ရန်မီ, devaysa နှင့် functioning ကို USB-ဒီဘာဂင် mode ကိုများအတွက်မှန်ကန်သောဒရိုင်ဘာလည်းမရှိကြောင်းသေချာပါစေ။ အစပိုင်းမှာကျွန်တော်တစ်ဦးညွှန်ကြားချက် apk_manager \ ရာအရပျ-apk-ကဒီမှာ-for-modding သို့သရုပျခှဲမည်ဖြစ်ကြောင်းဖိုင်ကိုရွှေ့ဖို့လိုအပ်ပါလိမ့်မယ်။ အဲဒီနောကျသငျသညျ Script.bat ကို run သငျ့သညျ။ ပြဿနာမရှိပါဘူးလျှင်, အစိမ်းရောင်စာလုံးဖွစျလိမျ့မညျသော console ကို, ကိုစတင်ပါ။ "ကျပစ်စညျးမြား" - အမှတ်အရေအတွက်သည်ကိုးဦးကိုရွေးချယ်ပါ။ ထိုလုပ်ငန်းစဉ်စတင်ခဲ့ခြင်းဖြစ်သည်ပြီးတာနဲ့သူက console ကိုပိတ်ဖို့ဖို့မလိုအပ်ပေသည်။ ထို့နောက်ဖွင့်လှစ်အကျိုးစီးပွား apk-file ကို archive ကို အသုံးပြု. နှင့်ကနေ extract အစီအစဉ်ကို dex2jar လုပ်ငန်းများ၌ခံရဖို့, classes.dex ။ ကျွန်တော်တို့ကိုလိုအပ်တဲ့ရလဒ်အဘို့အက extension ကို .bat နဲ့အရာဝတ္ထုရွှေ့ဖို့လိုအပ်ပေသည်။ သငျသညျ .jar အတွက်အဆုံးသတ်မည်သည့်ဖိုင်ကိုတွေ့ပါလိမ့်မယ်။ ဒါကြောင့်ယခုအချိန်အထိပြတင်းပေါက်ပိတ်ဖို့မထားဘူး။
ကျနော်တို့ data တွေကိုခွဲခြမ်းစိတ်ဖြာ
လျှောက်လွှာနှင့်ပတ်သက်ပြီးသတင်းအချက်အလက်ရရှိရန်, သင်ကမန်နီးဖက်စ်သည်ဖွင့်ရမည်ဖြစ်သည်။ ဒါကြောင့်အရကျနော်တို့သောအဓိကလှုပ်ရှားမှုအဖြစ်ပြုမူဆုံးဖြတ်ပေးပါတယ်။ ဒါဟာယခုကျွန်တော်တို့ကိုအကြီးမြတ်ဆုံးအရေးပါမှုတင်ဆက်သူကိုသူမဖြစ်ခဲ့သည်။ ဒါဟာပရိုဂရမ်တစ်ခု၏အောက်ခြေကိုကြည့်ဖို့လည်းနှစ်လိုဖွယ်ဖြစ်ပါသည်။ အောက်ခြေလိုင်စင်မန်နေဂျာနှင့်ပတ်သက်ပြီးသတင်းအချက်အလက်များရှိပါက, ကပြောင်းပြန်အင်ဂျင်နီယာထွက်သယ်ဆောင်ရန်သိသိသာသာခက်ခဲသည်။ သငျသညျ-gui JD နှင့်သစ်ပင်ကိုချဲ့ထွင်ရန်အကူးအပြောင်းလျှင်, ငါတို့သည်အများအပြားအမည်နေရာခြားတွေ့နိုင်ပါသည်။ သူတို့ထဲကသုံးယောက်ယူဆ။ ပထမဦးဆုံးခုနှစ်တွင်ကြော်ငြာနှင့်ဆက်စပ်သည့်ဖိုင်များဖြစ်သည်။ ဒုတိယလိုင်စင်မန်နေဂျာအတန်းဖြစ်လိမ့်မည်။ တတိယတှငျကြှနျုပျတို့လိုအပ်သောဒေတာများကိုဖြစ်ကြသည်။ ကြှနျုပျတို့သညျသှားတဲ့အခါမှာဒါဟာပါပဲ။ အဲဒီမှာ key ကိုရှာပြီးဖယ်ရှားပစ်ရန်လိုအပ်ပါတယ်, ပြီးတော့လိုင်စင်အလုပ်လုပ်ဗားရှင်းဟုတ်မဟုတ်စစ်ဆေးသောလိုင်းများ၏ကျန်ပါလိမ့်မယ်။ ဤသူအပေါင်းတို့သည်သန့်စင်ရန်လိုအပ်သည်။ ထိုအခါငါတို့ Apk Manager တွင်သောအရပ် bytecode သတ်မှတ်ထားသောနေရာရှာနေ။ အခုတော့ကျွန်တော်တို့ကိုသေးငယ်တဲ့ digression စေနှင့်အလားအလာပြဿနာများဖြစ်ပေါ်စေနိုင်ပါတယ်သောအဖွဲ့သည်ထွက်မှတ်ချက်ပေးရန်ကြကုန်အံ့။ ထို့နောက်ကျွန်တော့်အစီအစဉ်ကို compile ရန်ရှိသည်။
application များ Build
ဒါဟာကျွန်တော်တို့ကိုအားလုံးအတူတူပင် Apk Manager ကိုကူညီပေးပါမည်။ ကျနော်တို့သော့ခတ်ကြပြီမဟုတ်သော console ကို၌ပစ္စည်း№14ကိုရွေးပါ။ Next ကိုလှည့်ကွက်။ သင်စတင်အခါလျှောက်လွှာ, အစားရှုပ်ထွေးပါကတစ်စိတ်တစ်ပိုင်းသို့မဟုတ်လုံးဝ၎င်း၏ထိရောက်မှုကိုဆုံးရှုံးစေနိုင်သည်။ ကသာက်ရှိပါသည်နှင့်အခြားတစ်နေရာသွားလိုသည်ဟုဆိုလိုသည်, မစိုးရိမ်ပါနဲ့။ ကျနော်တို့ပြောင်းပြန်-အင်ဂျင်နီယာ-အားလုံးက Android app များကိုထုတ်သယ်ဆောင်ရန်ဆက်လက်။ ဆင့်ဆိုရမည်မှာ, အဘယ်အရာကိုတစ်ဦးအထူးသဖြင့်အမှု၌လုပ်ဖို့, ယေဘုယျစည်းကမ်းချက်များ၌, alas, မဖြစ်နိုင်ဘူး။ ထို့ကြောင့်, ပြဿနာရှာဒေသများမိမိတို့ကိုယ်ပိုင်ရပါလိမ့်မယ်။ လျှောက်လွှာဝင်းဒိုးကိုပိတ်ဆို့လျှင်ဥပမာအားဖြင့်, Pop-up window ကို, သင်ကုဒ်တွေ့မြင်နှင့်ဤတွေ့ဆုံဆွေးနွေးမှုများအတွက်တာဝန်ရှိကြောင်းအစိတ်အပိုင်းကိုဖယ်ရှားပစ်သင့်ပါတယ်။ ဒီနှင့်အတူကူညီပေးဖို့ JD-gui နိုင်ပါတယ်။ သငျသညျမွငျနိုငျသကဲ့သို့, ပြောင်းပြန်အင်ဂျင်နီယာတစ်ဦးလွယ်ကူသောစီးပွားရေးလုပ်ငန်းမရှိ, ကအသိပညာတစ်ခုစဉ်းစားဆင်ခြင်စရာစတိုးဆိုင်လိုအပ်သည်။ အရာအားလုံးမည်သည့်ပြဿနာမျှမရှိဘဲပြေးနေသည်ရင်တောင်သူက applications များ၏စွမ်းဆောင်မှုကိုစမ်းသပ်ဖို့လိုအပ်သောဖြစ်လိမ့်မည်။ ဒါကပြောင်းပြန်-အင်ဂျင်နီယာပိုပြီးအချိန်ကုန်လှုပ်ရှားမှုတစ်ခုဖြစ်သည်ဖြစ်ပါသည်။ ငါတို့ရှိသမျှသည်ပြဿနာများကိုဖော်ထုတ်နေကြပါတယ်သည်အထိအလုပ်လုပ်ဆက်လက်။
လုံခွုံမှု
အဘယ်အရာကိုကျနော်တို့ပြောင်းပြန်အင်ဂျင်နီယာထံမှကာကွယ်စောင့်ရှောက်ရေးအားလုံးကို Android-application ကိုလိုအပ်တယ်ဆိုရင်? တိကျတဲ့အစီအစဉ်များကိုအသုံးပြုခြင်းသို့မဟုတ်စာဖြင့်ရေးသား parsing စေရန်ဝင်ရောက်စွက်ဖက်မည်ကိုတစ်ဦးကုဒ်ဖွဲ့စည်းပုံ၏ဖန်တီးမှု: ဤကိစ္စတွင်ခုနှစ်, options နှစ်ခုရှိပါတယ်။ အဆုံးစွန်သော option ကိုသင့်လျော်သာအတွေ့အကြုံရှိကျွမ်းကျင်ပညာရှင်များဖြစ်ပါသည်, ဒါကြောင့်ကျနော်တို့ကာကွယ်စောင့်ရှောက်ရေးကိုသာပထမဦးဆုံးနည်းလမ်းကိုစဉ်းစားပါလိမ့်မယ်။ တစ်ဦးအထူးပြုဆော့ဖ်ဝဲကိုအသုံးပြုခြင်းကို ProGuard အဖြစ်။ , ရှုပ်ထွေးပွေလီအောင်လုပ်ခြင်းနှင့်ကုဒ် optimization လျှော့ချရန်အသုံးပြုသည်သောဤလျှောက်လွှာ။ ကမှတဆင့်အစီအစဉ်ကို "Chase" လျှင်, ငါတို့သည်သူထက် .apk သေးငယ်တိုးချဲ့မှုနှင့်အတူဖိုင်တစ်ဖိုင် * ရယူပါ။ ထိုကဲ့သို့သောအမှု၌ disassemble ဖို့ပိုပြီးခက်ခဲပါလိမ့်မယ်။ နှင့်ဤအစီအစဉ်၏အားသာချက်ကြောင့်ပင် r9 updates များကိုအတူတည်ဆောက်မှာ Android application များအတွက်မိတ်ဆက်ခဲ့ပြီးဖြစ်ပါတယ်။ ဒါကြောင့်၏ဖန်ဆင်းခြင်းနှင့်ဖွံ့ဖြိုးရေး၏စံ tools များရှိကြောင်းဆို developer အားသာချက်ဖြစ်ပါတယ်ယူပါ။
ကောက်ချက်
ကျနော်တို့ပြောင်းပြန်-အင်ဂျင်နီယာတစ်ပုံစံတည်းကောင်းမကောင်းတစ်ခုခုအဖြစ်ကိုယ်စားပြုနိုင်ဟုမဆိုနိုင်ပါ။ ဟုတ်ပါတယ်, application တစ်ခုဖန်တီးကြသူ developer များ၏အမြင်များ၏အချက်အနေဖြင့်, တကပျော်ရွှင်အဖြစ်အပျက်မဟုတ်ပါဘူး။ သို့သော်အခြားတစ်ဖက်တွင်, များစွာသောအမှုများအတွက်လိုအပ်သောဖိုင်များကိုအရေးသားခြင်း programmer တွေထိုကဲ့သို့သော tools များအသုံးပြုခြင်းထက်လျော့နည်းစျေးကြီးတဲ့အချိန်နိုင်ပါတယ်ခံစားခဲ့ရသညျ။ အတွေ့အကြုံမရှိသေးသော developer များအဘို့ reverse-အင်ဂျင်နီယာပေမယ့်အရာတစ်ခုခုကိုအကောင်အထည်ဖေါ်ရန်မည်သို့မျှစိတ်ကူးရှိလျှင်ပင်စံပြကောင်းတစ်ဦးဝန်ဆောင်မှုဆပ်နိုင်, မအတော်လေးရှင်းရှင်းလင်းလင်းအောဒီရည်မှန်းချက်များ၏အောင်မြင်မှုနှင့်အတူကူညီနိုင်သည်။