Internet Windows Android
Kengaytirish

Android proshivkasini deodex va deodexing. Androidda odeks va deodex nima, deodexlangan proshivka nima

Ertami-kechmi siz Odex va Deodex kabi tushunchalarga duch kelasiz. Foydalanuvchi dasturiy ta'minotni o'zgartirishga qaror qilgan paytda ular haqida bilish ayniqsa muhimdir. Odex va Deodexni hamma ham to'g'ri tushuntira olmaydi - bu nima? Ba'zan bu mobil qurilmangizga to'g'ri dasturiy ta'minotni tanlash va o'rnatishni qiyinlashtiradi. Natijada, smartfon yoki planshetning ishlashi foydalanuvchi kutganiga javob bermaydi. Gap shundaki, barcha foydalanuvchilarni ikki toifaga bo'lish mumkin. Birinchi qiymatlar barqaror, tez va ishonchli ishlash. Bunday foydalanuvchilar o'z qurilmalarida kamdan-kam hollarda maxsus dasturiy ta'minotdan foydalanadilar. Ikkinchi toifa, aksincha, shaxsiy ehtiyojlar asosida gadjetni to'liq moslashtirishni afzal ko'radi. Bunday foydalanuvchilar ko'pincha maxsus dasturiy ta'minotdan foydalanadilar, ildiz huquqlariga ega bo'lishadi va planshet yoki smartfonning operatsion tizimining ishlashiga ta'sir qiladigan muhim parametrlarni o'z xavflari ostida o'zgartirishdan qo'rqmaydilar. Qanday bo'lmasin, Deodex va Odex o'rtasidagi farq nima haqida ma'lumot, mobil gadjetlardan foydalanish ehtiyojlaridan va muhim sozlamalarni o'zgartirishga munosabatidan qat'i nazar, barcha toifadagi foydalanuvchilar uchun foydali bo'ladi.

Odex va Deodex proshivkalari o'rtasidagi farq, shuningdek ularning afzalliklari va kamchiliklari

Odex va Deodex nima?

Odex - bu Android operatsion tizimida ishlaydigan mobil gadjetning zavod dasturiy ta'minotini nazarda tutadigan umumiy tushuncha. Ba'zan ular dexed deb ataladi. Deodex - bu proshivkaning maxsus versiyasi yoki ba'zilar aytganidek, deodexlangan.

Har bir dasturda ijro etuvchi bo'lim mavjud. Maxsus operatsion tizimda Android classes.DEX faylida joylashgan bo'lsa, asl versiyada operatsion tizimning Dalvik Virtual Machine virtual mashinasida ijro etuvchi bo'lim mavjud. Odex "Optimallashtirilgan Dalvik bajariladigan fayl" degan ma'noni anglatadi. Odex faylining ishlash printsipi shundaki, u operatsion tizimga apk kengaytmali fayllardan ma'lumotlarni qidirmasdan va ochmasdan to'g'ridan-to'g'ri ma'lumotlarni olish imkonini beradi.

Deodex proshivka nima? Bu dasturning bajariladigan qismi classes.dex fayliga qayta paketlangan va keyin yana apk fayliga ko'chiriladigan dasturiy ta'minot variantidir. Bu sizga dasturning barcha elementlarini bitta bo'limda saqlash imkonini beradi, shu bilan birga foydalanuvchi sozlamalarini o'zgartirganda dasturning noto'g'ri ishlashiga olib kelishi xavfini kamaytiradi.

Mobil qurilmangizda Odex yoki Deodex proshivka o'rnatilganligini aniqlash juda oddiy. Buning uchun foydalanuvchi fayl boshqaruvchisidan foydalanishi kerak. Foydalanuvchi /system/app papkasiga o'tishi kerak. Jilddagi fayllarning kengaytmasiga qarab siz tizim turini aniqlashingiz mumkin. Odex kengaytmasi odexlangan versiyaga ishora qiladi. Agar siz faylni tizim papkasida topmasangiz, bu deodexed proshivka mobil qurilmada o'rnatilganligini anglatadi.

Afzalliklari va kamchiliklari

Qaysi biri yaxshiroq ekanligini aniq aytish mumkin emas - Odex yoki Deodex? Ikkala variant ham o'zlarining afzalliklari va kamchiliklariga ega. Kodlangan versiyaning afzalliklari shundaki, ilovalar ancha tezroq ishga tushadi. Bu tizim tomonidan ma'lumotlarni oldindan yuklash tufayli mumkin bo'ladi. Shu bilan birga, apk kengaytmali fayllar kamroq qurilma xotirasini talab qiladi.

Deodexlangan tizimlarning afzalliklari shundaki, keraksiz dasturni o'chirish ancha oson. Buni amalga oshirish uchun dasturning ishlashi uchun javobgar bo'lgan apk faylini o'chirishingiz kerak. Shuni ham ta'kidlash kerakki, operatsion tizimni o'zgartirish ancha oson, chunki ma'lumotlar bir joyga joylashtirilgan.

Dexed qobiqni buzish ancha qiyin, chunki u ikki xil bo'limdan ma'lumotlarni oladi. Dasturlarni o'chirishning o'ziga xos xususiyatlari bor, shuning uchun biz ushbu jarayonni diqqat bilan kuzatib borishingizni tavsiya qilamiz. Odex kengaytmali fayllar ham o'chirilishi kerak. Deodexlangan qobiqlarning kamchiliklari sekinroq ishlashni o'z ichiga oladi, bu eng mashhur dasturlardan ma'lumotlarni saqlaydigan keshni avtomatik tozalash tufayli yuzaga keladi.

Deodex versiyasini qanday qilish kerak?

Deodex proshivkasini deodexlangandan yaratishning oddiy usuli bor. Buning uchun siz xUltimate yordam dasturini yuklab olishingiz va o'rnatishingiz kerak. Keyin bir necha oddiy qadamlarni bajarishingiz kerak.

Odex va Deodex nima?

Tizim/ilova papkasida APK va Odex fayllari mavjud. Deodex - barcha odex fayllari APK-ga kiritilganligini va tizim/ilova papkasida emasligini bildiradi. Deodex tizimi tahrirlash uchun qulay, lekin u ancha beqaror va sekinroq deb hisoblanadi, lekin amalda men shaxsan bunga roziman. Odex fayllari odatda apk ichida joylashgan paketli dex kod modullaridir. Ilovani ishga tushirishni tezlashtirish uchun Dalvic VM dan foydalanilgan.

Dalvik VM ni yuklashni tezlashtirish uchun bajariladigan kodni (classes.dex) dasturlardan (.apk fayllari) .odex kengaytmali alohida fayllarga ko'chirish mumkin. Qoida tariqasida, ushbu shaklda zavod (rasmiy) dasturiy ta'minot o'rnatiladi. Ushbu yechimning nochorligi - interfeysni sozlashning mumkin emasligi.

.odex fayllaridan bajariladigan kodni yana dastur fayllariga (.apk) aylantirish.
Deodex dasturiy ta'minotini o'rnatish uchun sizga odatda Root va CWM Recovery yoki boshqa o'zgartirilgan tiklash (TWPR, Philz Touch va boshqalar) kerak bo'ladi.

Odex yoki Deodex proshivkasini quyidagi tarzda bilib olishingiz mumkin.
Agar tizim/ilova papkasida faqat APK kengaytmali fayllar mavjud boʻlsa, bu deodex proshivkasini, agar odex kengaytmali fayllar mavjud boʻlsa, bu odex proshivkasini bildiradi. Barcha rasmiy odex dasturiy ta'minot. Deyarli barcha o'zgartirilgan proshivkalar deodexdir, ammo o'zgartirilganlar orasida odex proshivkalari ham mavjud.

Deodexni o'rnatish nimani anglatadi?
Aytaylik, siz allaqachon proshivkangiz uchun bir xil deodex fayllarini yaratdingiz yoki topdingiz. Endi siz ularni tizim/ilova jildiga yuklashingiz kerak, lekin ularni Explorer orqali almashtirib bo'lmaydi, chunki tizim hozirda ulardan foydalanishi mumkin. Buning uchun tayyor fayllar mavjud. Ular (fayllar) modni qayta tiklash uchun skript bilan maxsus ZIP arxiviga joylashtirilgan (siz bu skriptni o'zingiz yozishingiz mumkin) va siz qilish kerak bo'lgan narsa bu arxivni har qanday o'zgartirilgan tiklash yordamida o'rnatishdir.zip fayllarni o'rnatish bo'yicha ko'rsatmalar

Ushbu ZIP arxivi deodexlangan fayllar va mod orqali o'rnatish ko'rsatmalari bilan arxivdir. tiklanish. Agar sizda Russifier o'rnatilgan bo'lsa, deodexedni o'rnatganingizdan so'ng, ruscha yo'qoladi, hech qanday muammo yo'q, ruschani yana o'rnatish kerak bo'ladi. Buning sababi, Android-da interfeys tili apk-da joylashgan XML fayli tomonidan tasvirlangan. Ruslashtirish apk-ga ruscha xml-ni qo'shish orqali sodir bo'ladi va siz tizimingizga Russifier-ni o'rnatganingizda, eski APK oddiygina yangi ruslashtirilganlar bilan almashtiriladi. Yoriqni o'rnatish mod uchun bir xil ZIP yordamida amalga oshiriladi. deodexed kabi qayta tiklash. Rusifikatsiyalangan fayllar allaqachon deodexlangan, chunki biz odeks fayllarini tahrirlay olmaymiz. Bizda mavjud bo'lgan deodexed arxivlar xorijiy saytlardan olingan, shuning uchun ularda rus tili yo'q, shuning uchun ularni o'rnatgandan so'ng siz mahalliylashtiruvchini qayta o'rnatishingiz kerak.

Deodexedni o'rnatgandan so'ng, barcha tizim ilovalari yuqorida tavsiflangan sabablarga ko'ra tiklanadi va almashtiriladi. Shuning uchun tizim fayllarini o'chirish deodexedni o'rnatgandan so'ng amalga oshirilishi kerak.

Har biringiz "deodex" yoki "odex" so'zlarini bir necha marta eshitgansiz. Odatda, ular qurilmangiz uchun turli xil proshivkalar joylashtirilgan joyda topiladi, masalan, XDA-Developers yoki 4pda. Xo'sh, bu nimani anglatadi, DEODEX yoki ODEX? Ularning farqlari nimada? DEODEXni qanday qilish kerak? Bu va boshqa savollarga “Nima...” dayjestining navbatdagi sonida javob topasiz.
Odex (Optimallashtirilgan Dalvik Executable File) - bu dasturning kodini saqlaydigan tizim ilovalari bilan bir papkada joylashgan fayl. Ma'lumki, har bir dasturga ko'rsatmalar kerak, buning yordamida u (dastur) u yoki bu funktsiyani yoki ishni bajaradi. Bu men ilgari tasvirlab bergan dastur kodi. Agar biron-bir tizim faylini o'zgartirmoqchi bo'lsangiz, odex proshivkasini o'rnatishda odex faylining o'zi va .apk faylini o'rganishingiz kerak bo'ladi. Bundan ma'lum bo'ladiki, bu jarayon unchalik oson bo'lmaydi. Aynan shuning uchun deodex mikrodasturini yaratish imkoniyati amalga oshirildi.

Ma'lumki, odex proshivkalarida fayllar "tasodifiy" saqlanadi. Biroq, deodex bilan bunday buzuqlik yo'q, deyish mumkin. Deodex-dagi barcha fayllar .zip arxivi kabi saqlanadi, ammo bizning holatlarimizda ular .apk-ga "qadoqlangan". Shu sababli, qo'shimcha o'zgartirishlar uchun dasturni qismlarga ajratish osonroq bo'ladi va hamma narsa bir joyda to'planganligi sababli, deodex proshivka kamroq joy egallashi mumkin.

Biroq, deodexni cheksiz maqtash mumkin emas. Deodexning asosiy kamchiligi shundaki, ilovalar odeksga qaraganda biroz ko'proq yuklanadi. Katta ehtimol bilan, foydalanuvchi buni sezmaydi. Ammo shuni ta'kidlay olmaymanki, odexning afzalligi ham, deodexning kamchiliklari ham shundaki, odexdagi barcha tizim ilovalari ishlab chiqaruvchining o'zi tomonidan ma'lum bir qurilma uchun optimallashtirilgan. Va bu, shubhasiz, odex proshivkasining ortiqcha.

Qurilmangiz uchun tizimga turli xil tayyor modifikatsiyalarni o'rnatishda sizda deodex proshivkasi bo'lishi kerakligini aytishni deyarli unutib qo'ydim.

Ehtimol, bu vaziyatda atamalarning ma'nosi aniq. Va men ba'zi odamlar allaqachon deodexni sinab ko'rishni xohlashlariga pul tikishga tayyorman. World Wide Webda deodex proshivka bo'yicha juda ko'p ko'rsatmalar mavjud. Biroq, men sizni Google-da ularni qidirishga yuborishga jur'at etmayman, lekin men barcha kichik narsalarni ta'kidlashga harakat qilib, bu jarayonni indamay yozib qo'yaman.

Androidning turli versiyalari uchun ko'rsatmalar bir xil emas. Mening qurilmamda Android 5.0 Lollipop o'rnatilganligi sababli, men ushbu versiya uchun maxsus deodex uchun ko'rsatmalar yozaman.

  1. Birinchidan, shaxsiy kompyuterimizga JoelDroid Lollipop Batch Deodexer dasturini yuklab olishimiz kerak. Ushbu yordamchi dastur ishlashi uchun Java dasturi talab qilinadi. Shuni ta'kidlaymanki, ko'pincha Java ilovasi o'z yo'lini noto'g'ri va noto'g'ri yozadi. Shu sababli, ushbu yo'lni ushbu ko'rsatmalarga muvofiq qo'lda ro'yxatdan o'tkazishingiz kerak.
  • Shundan so'ng, biz Android 5.0 Lollipop-da ishlaydigan qurilmamizga har qanday fayl boshqaruvchini o'rnatishimiz kerak, bu orqali uchta asosiy tizim papkalarini - APP, PRIV-APP, FRAEMWORK - SD-kartadagi alohida papkaga nusxalashimiz kerak. Ular tizimning ildiz papkasida joylashgan.


  • Keyinchalik, shaxsiy kompyuteringizdagi har qanday ichki diskning ildizida MyROM papkasini yaratishimiz kerak. Keyin biz ushbu papkada boshqa papka yaratamiz, lekin tizim nomi bilan. Nazariy jihatdan, siz quyidagi yo'lni olishingiz kerak - E: \ MyROM \ system. Bu erda "E" sizning ichki xotirangiz (qattiq disk)
  • Biz ikkinchi bosqichda nusxa olgan tizim papkalarini E:\MyROM\system jildiga ko'chirish kerak.
  • Endi, nazariy jihatdan, biz hamma narsani tayyorladik va biz allaqachon DEODEXATION nuqtasiga o'tishimiz mumkin.
  • Oldin o'rnatilgan JoelDroid Lollipop Batch Deodexer yordam dasturini ishga tushiring.
  • Yordamchi dasturdagi "Browse" tugmasini bosish orqali biz E:\MyROM\tizimiga yo'lni ko'rsatishimiz kerak.
  • Yo'l ko'rsatilgan, hamma narsa tayyor. Biz qilishimiz kerak bo'lgan yagona narsa "Proseccni ishga tushirish" tugmasini bosish, shundan so'ng deodexatsiya boshlanadi. Ushbu protsedura taxminan 10-15 daqiqa davom etadi.
  • Deodexatsiya tugallangandan so'ng, E:\MyROM\tizim yo'li bo'ylab joylashgan fayllarni qurilmangizdagi MicroSD flesh-diskiga nusxalashimiz kerak.
  • Keyinchalik, AROMA FileManager dasturini yuklab olishimiz va uni qurilmangizga maxsus tiklash orqali o'rnatishimiz kerak. Ammo o'rnatishdan oldin, agar u tanlanmagan bo'lsa, Mount bo'limida tizimni tanlashimiz kerak.
  • Bularning barchasidan so'ng, biz fayl tizimining ildiziga o'tishimiz va tizim papkasidan APP, PRIV-APP va FRAEMWORK papkalarini o'chirib tashlashimiz kerak, shunchaki ularni o'chirib tashlang, chunki ARM papkalarini nusxalashda qoladi va butun jarayon buni hisobga oladi. , kanalizatsiyaga tushib ketdi.
  • Keyinchalik, 9-bosqichda ilgari o'tkazilgan deodex papkalarini butun fayl tizimining ildizidagi Tizim papkasiga nusxalang.
  • Shundan so'ng biz papkalar (RWXRX-RX), .apk fayllari va .xml fayllari (RW-R-R) uchun ruxsatlarni o'rnatadigan skriptni o'chirishimiz kerak.
  • Keyin biz keshni o'chirish va dalvik/artni tozalashimiz kerak. Qurilmani qayta ishga tushiring va olingan deodex proshivkasidan rohatlaning.

  • Sizda DEODEX o'rnatilganligiga ishonch hosil qiling - mikrodasturni quyidagi qisqa ko'rsatmalar yordamida yangilashingiz mumkin: D


    Men ODEX va DEODEX atamalari haqida eng asosiy narsalar haqida gapirganimga to'liq ishonaman va ushbu maqolani yakunlash mumkin. E'tiboringiz uchun barchangizga rahmat, maqolani baholang, kuningiz xayrli va YOZ o'tsin!

    Salom Xabr!

    Bir necha yil oldin, men Android bilan birinchi marta tanishganimda, ishdagi hamkasbimdan Android o'zgartirilgan yoki uy qurilishi dasturiy ta'minotini o'rnatish imkoniyatini taqdim etishini eshitdim. Ochig'i, o'shanda men bundan yiroq edim. Va hatto yarim yil oldin men bunday narsalarga deyarli qiziqmasdim. Yuragimning tubida men amin edim: ishlab chiqaruvchining qilgan ishi allaqachon normal foydalanish uchun mo'ljallangan.

    Zavod sozlamalari Google, Skype, Facebook va boshqa ilovalardan foydalanishni taqiqlagan Xitoydan telefon sotib olganimda xafa bo'lganimni tasavvur qiling. Aslida, ba'zi narsalarga ko'z yumish mumkin edi, lekin telefonim Google hisobidan foydalanishni talab qilmaganida, men bilan nima sodir bo'lishidan qat'i nazar, buni aniq tushunishga va'da berdim.

    Yarim yil o'tdi va mening shaxsiy dasturiy ta'minotim butun dunyoda muvaffaqiyatli qo'llanilmoqda.

    Ushbu maqolalar turkumida Android uchun teskari dasturlashni qanday amalga oshirish, yamoqlar, tweaks va modlarni amalga oshirish muhokama qilinadi.

    Preambula

    Shunday ekan! Keling, birinchi navbatda ishlatiladigan tushunchalarni aniqlaymiz berilgan maqola. Biroq, sizning odatiy tushunchangiz juda boshqacha bo'lishi mumkin.

    Yamoq- dastur algoritmini o'zgartirish uchun mavjud dastur kodini o'zgartirish yoki almashtirish.
    Maud- qoida tariqasida, algoritmni o'zgartirmasdan mavjud dastur kodiga qo'shimcha funksiyalar qo'shish.
    Tweak- tizim parametrlariga kirishni osonlashtirish uchun dastur funksionalligini takomillashtirish.

    Shuni ham ta'kidlashni istardimki, barcha misollar HTC telefoni uchun olinadi, ammo bu bu ma'lumotni boshqa telefonlarda ishlatib bo'lmaydi degani emas.

    Atrof muhitni tayyorlash

    Men u yoki bu dasturiy ta'minotdan foydalanish bo'yicha batafsil ko'rsatmalarsiz qila olaman. Agar siz ushbu maqola bilan qiziqsangiz va shu paytgacha o'qigan bo'lsangiz, umid qilamanki, siz allaqachon tajribali foydalanuvchisiz va ushbu sohada foydalanish yoki hech bo'lmaganda tajriba o'tkazish tajribasiga egasiz. Habré-da bo'lgani kabi jamoat mulkida ko'plab ko'rsatmalar, maqolalar va test natijalari mavjud. Men ba'zi atamalarni tasvirlamasdan ham qilaman, aks holda maqola juda uzoq va zerikarli bo'lib chiqadi. Biz faqat nuqtaga yozamiz. Ishonchim komilki, siz chorshanba kuni uzoq vaqtdan beri bo'lgansiz. Agar yo'q bo'lsa, men uni yuklab olishni va o'rnatishni taklif qilaman.

    1 . Android SDK. Bu Android uchun ilovalar ishlab chiqish muhiti. O'zgartirishlar kiritish uchun biz albatta dastur kodimizni tekshirishimiz kerak bo'ladi. Rivojlanish muhiti biz foydalanishimiz mumkin bo'lgan eng yaxshi muhitdir.
    2 . Android oshxona. Ushbu yordamchi dastur rasmiy yoki norasmiy dasturiy ta'minotning tizim bo'limlari tasvirlari bilan ishlashga imkon beradi.
    3 . JD-GUI. Java kodini dekompilyator. Darhol ta'kidlashni istardimki, bu foydalanish qulayligi nuqtai nazaridan eng yaxshi dekompilyator.
    4 . DJ Java dekompilyatori. Java tili dastur kodining boshqa dekompilyatori yoki ba'zilar uni desambler deb ataydi. Foydalanish qulay emas, lekin JD-GUI ba'zan tushunmaydigan kodni tahlil qiladi.
    5 . smali. Boshqa disassembler, lekin bu safar dalvik kodi. smali qismlarga ajratish uchun kerak, backsmali esa kodni yig'ish uchun kerak.
    6 . dex2jar. Dalvik kodini bajariladigan fayllarni aylantirish uchun yordamchi dastur.

    Mikrodasturni konvertatsiya qilish

    Albatta, ishlab chiqaruvchidan telefoningizdagi proshivka quvvat sarfini kamaytirish uchun optimallashtirilgan. Mikrodasturni o'zgartirish uchun uni kodni o'zgartirishga imkon beruvchi formatga aylantirish kerak. Buning uchun Android Kitchen ishlatiladi. Albatta, siz buni o'z qo'llaringiz bilan qilishingiz mumkin, xuddi shu "oshxona" ni topgunimga qadar men qilganimdek. Telefondan tizim maydonini qanday olib tashlash, atrof-muhitni o'rnatish va DEODEX proshivkasini yaratish haqida Internetda o'qishingiz mumkin. Agar siz hali biror narsani tushunmasangiz, menimcha, etarli tajribaga ega bo'lmaguningizcha, ushbu maqolani o'qishni to'xtatib turishga arziydi.

    Mikrodastur optimallashtirilgan versiyadan (ODEX - optimallashtirilgan dalvik bajariladigan kodi, agar xotiram menga to'g'ri xizmat qilsa) DEODEXga (ya'ni optimallashtirilmagan) o'zgartirilgandan so'ng, barcha bajariladigan fayllar o'zgartirishga tayyor.

    To'g'ridan-to'g'ri o'zgartirishlar

    Yamalar yaratish
    Yuqorida aytib o'tganimdek, mening telefonim dastlab Google-dan foydalanishni taqiqlagan edi. Xo'sh, nima bo'lishidan qat'iy nazar, siz Playstore-ga kira olmaysiz, hisob qaydnomasini o'rnatolmaysiz, telefon kitobi haqiqatan ham sinxronlashtirilmaydi. Nima uchun sizga bunday Android kerak? Qurilmaning logkatini uzoq vaqt qazib olgach, men Google-dan foydalanish taqiqlanganligi haqidagi yozuvlarni topdim. Android-ning eng noqulay tomoni shundaki, siz jurnalni ko'rasiz, lekin uni qaysi tizim ilovasi ishlab chiqarayotganini bilmaysiz. Oyoqlarim qayerdan kelayotganini bilish uchun barcha tizim ilovalarini demontaj qilingan Java kodiga o'tkazishim kerak edi. Bu juda ko'p vaqt talab qildi, lekin men hali ham tahlil qilish va to'g'ri kodni topishda qilgan ishimdan foydalanaman. Bunday vositalarni olish bosqichlari quyidagilardan iborat:
    1 . Barcha proshivkalarni DEODEX ni yarating
    2 . Sizning yangi DEODEX proshivkangiz yig'ilib, telefoningizga o'rnatilishi kerak. Bu qanday amalga oshiriladi - bu boshqa maqolaning mavzusi.
    3 . /system/framework-da joylashgan har bir fayldan classes.dex faylini chiqarib oling va uni dex2jar yordamida JARga aylantiring.
    4 . Olingan har bir JAR-ni JD-GUI-da oching va uni manba kodiga qayta saqlang
    5 . Arxivdan manba kodini oching.

    Oxir-oqibat, men /system/framework-da JAR fayllari bo'lsa, shuncha papkaga ega bo'ldim va har bir jild Java manba kodi tuzilishiga ega edi.
    Oddiy manipulyatsiyalar orqali men logcat-da yozuvlarni yaratadigan joyni tezda topdim.

    Biz taqiqning butun mantig'ini ko'rib chiqmaymiz, chunki har bir holat alohida hikoyadir. Tekshiruvlar qayerda amalga oshirilganligini, boshimda algoritmning blok diagrammasini qurib, algoritmni biroz “buzish” uchun qaerga borishni tushunishimdan oldin bir necha soat vaqt sarflashim kerak edi.

    Bu oddiy bo'lib chiqdi. Oldindan o'rnatilgan konstantalarga asoslangan holda, u bilan bog'langanda, telefon Xitoyga tegishlimi yoki yo'qmi, deb javob beradigan kichik dastur mavjud.

    Kod faylda edi HTCExtension.jar, va ushbu pastki dasturni o'z ichiga olgan sinf mavjud edi

    Asl faylni ochish va tahlil qilish
    1 . Birinchidan, biz kodning bizga kerak bo'lgan qismi uchun javobgar bo'lgan asl DEODEX JAR faylini olishimiz kerak. Bizning holatda HTCExtension.jar.
    2 . Har qanday arxivchi bilan oching va u yerdan classes.dex-ni chiqarib oling
    3 . JAR fayliga aylantirish uchun dex2jar konvertoridan foydalaning. Buyruq: dex2jar.bat classes.dex
    4 . Olingan classes_dex2jar.jar faylini JD-GUI da oching.
    5 . Ha, ko'pincha JD-GUI kodni asl nusxadagidek emas, tushunarli, lekin uni o'qish mumkin. Manba kodida biz quyi dastur loyiha parametrlarini va proshivka tili bayrog'ini tekshirayotganini ko'ramiz. Bizning baxtsiz holatda, TRUE qaytariladi.
    umumiy statik mantiqiy isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_HRO(Build2Flag.Htc_PROJECT_Flag ==(T3)JPc) _bayroq == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) rostni qaytaradi; noto'g'ri qaytaradi; )
    6 . Yamoq yaratish uchun biz Dalvik kodining o'zini qismlarga ajratishimiz kerak. Buning uchun biz baksmalidan foydalanamiz. Eng qulay usul - alohida papka yaratish va u erda uchta faylni bir joyga qo'yish: HTCExtension.jar, smali.jar Va baksmali.jar. Buyruqni bering java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

    Bu sizning Android versiyangiz uchun API. JB uchun bu 16
    - barcha mikrodastur ramkalari joylashgan papka.

    Mening holimda bu buyruq edi
    java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
    7 . Yangi yaratilgan papkamizda HTCExtension papkasi paydo bo'ldi va unda Dalvik kodli fayllarimiz paydo bo'ldi.
    8 . Yo'l bo'ylab faylni topish \com\htc\util\contacts\BuildUtils$Customization.java va kodga qarang:
    .metod public static isChina()Z .registerlar 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16qe, if , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short/v1/HtcBuildFlag, Lcom/htc/htcjavaflag/HtcBuildFlag, ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-no v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htcflag/Hg;-Build; Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq.con, v13, v13 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 207, const/go.04. usuli
    9 . Qo'rqinchli, shunday emasmi? Hech narsa aniq emas. Ammo bu hal qilinishi mumkin bo'lgan muammo. O'zingizning bir nechta yamoqlaringizni yaratib, tajriba orttirganingizdan so'ng, siz uchinchi tomon vositalarisiz kodni osongina o'zgartirishingiz mumkin. Bizning holatda, bu kodda
    .prologue const/4 v0, 0x1 v0 o'zgaruvchisiga 1 qiymatini, ya'ni TRUE qiymatini beradi. Keyin har xil tekshiruvlar mavjud va agar telefon xitoycha bo'lmasa, o'zgaruvchining qiymati o'zgaradi:
    .line 297 const/4 v0, 0x0 goto:goto_13
    10 . Rossiya demokratiyasining otasini qutqarishning eng oson yo'li kodni quyidagiga o'zgartirishdir:
    .prologue const/4 v0, 0x0 , ya'ni o'zgaruvchining qiymatini 1 dan 0 ga o'zgartiring. Ya'ni, nima bo'lishidan qat'iy nazar, FALSE qiymati har doim qaytariladi va JD-GUI da kod umumiy statik ko'rinishga ega bo'ladi. mantiqiy isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag ==(Fc_Tfl.J) Build ==(2Pfl.J)(FcBuildFlag.Htc_PROJECT_flag); = 1) && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) false qaytaradi; false qaytaradi; )
    11 . Ha, usul ishlaydi. Lekin biz oson yo'llarni qidirmayapmiz - bu safar. Ikkinchidan, bu juda chiroyli emas. Men shunga o'xshash kodni xohlayman
    ommaviy statik mantiqiy isChina() ( false qaytaradi; )
    12 . Ushbu manba kodi uchun Dalvik kodini qanday olishimiz mumkin? Yangi boshlanuvchilar uchun biz kichik hiyla qilamiz.

    Dalvik kodini yaratish
    1 . Android SDK ni oching.
    2 . Biz yangi loyiha yaratamiz va yagona test sinfimizga quyidagi kodni yozamiz
    paket ru.habrahabr.test; umumiy sinf testi ( public static boolean isChina() ( return false; ) )
    3 . Biz loyihamizni kompilyatsiya qilamiz va keyin yig'ilgan dasturni ish joyidan olamiz.
    4 . Biz yig'ilgan dasturni JAR faylini o'chirgan papkaga joylashtirdik.
    5 . Buyruqni bering java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Biz yangi qurilgan dasturni Dalvik kodiga qismlarga ajratdik.
    7 . Test.smali faylimizni oching va u erda kodni ko'ring
    .metod public static isChina()Z .registerlar 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end usuli
    8 . Hammasi, yamoq kodi tayyor.
    Yamoqni o'rash
    1 . Dalvik kodi asl manba faylidagi kod qatorini ko'rsatuvchi markerlar bilan to'ldirilgan. Bu, agar mavjud bo'lsa, dasturingizda xatolarni ko'rsatishda kerak. Kod, shuningdek, qatorlarni ko'rsatmasdan yaxshi ishlaydi.
    2 . Biz qatorlarni raqamlash bilan o'chirib tashlaymiz, bizdagi usulni (kichik dastur) nusxalaymiz va almashtiramiz \com\htc\util\contacts\BuildUtils$Customization.java fayl.
    .metod public static isChina()Z .registerlar 1 .prologue const/4 v0, 0x0 return v0 .end usuli
    3 . Faylni saqlang. Ha, aytishni unutibman, sizga oddiy muharrir kerak, masalan, Notepad++ yoki EditPlus. Kimga qaysi biri yoqadi?
    Yamalgan JAR faylini kompilyatsiya qilish va yaratish
    1 . Backsmali-dan foydalanib, biz JAR faylimizni o'chirib tashladik va endi uni qayta birlashtirishimiz kerak.
    2 . Buyruqni bering java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
    3 . classes.dex fayli bizning papkada paydo bo'ladi
    4 . Yana ochilish HTCExtension.jar arxivator bilan fayl va undagi mavjudni almashtiring classes.dex bizning yangi yaratilganimizga.
    5 . Mana, bizniki HTCExtension.jar o'zgartirilgan dastur kodini o'z ichiga oladi.
    Asl faylni yamalgan faylga almashtirish
    Odatda, oddiy foydalanuvchilar uchun maxsus skriptlar yaratiladi, ular tiklash orqali almashtiriladi. Lekin bizni bu narsa qiziqtirmaydi. Birinchidan, bu uzoq va zerikarli, ikkinchidan, biz tajribali foydalanuvchilarmiz va ba'zi nozikliklarni olishimiz mumkin.

    1 . Agar sizda allaqachon DEODEX proshivkasi bo'lsa va ildizga kirish huquqiga ega bo'lsangiz, joriy ishchi faylni quyidagi buyruqlar bilan almashtirishingiz mumkin:

    Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [elektron pochta himoyalangan]@classes.dex qayta ishga tushirildi

    Birinchi buyruq yamalgan faylni flesh-diskga yuklaydi
    2-buyruq qobiqni ochadi
    3-buyruq ildizga kirish huquqini beradi
    4-buyruq tizimni o'qish/yozish rejimiga o'rnatadi
    5-buyruq faylning zaxira nusxasini yaratadi
    6-buyruq mavjud faylni yangi tuzatilgan fayl bilan qayta yozadi.
    7-buyruq ruxsatlarni sozlaydi
    8-buyruq keshni o'chiradi
    9-buyruq qurilmani qayta ishga tushiradi.

    2 . Shu paytgacha o'qiganingiz uchun rahmat, oz qoldi.
    3 . Qayta ishga tushirilgandan so'ng, yangi yamalgan kodingiz kuchga kiradi.
    4 . Agar kod ishlamasa yoki xatolik yuzaga kelsa, oddiy kombinatsiyalar yordamida siz zaxira nusxasini qaytarishingiz mumkin.
    adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [elektron pochta himoyalangan]@classes.dex qayta ishga tushirildi

    Epilog

    Ha, ba'zilar bu maqolani juda aniq deb o'ylashdi, ba'zilarini tushunish qiyin, ba'zilari esa foydasiz deb topdi. Men bularning barchasi jonli va amalda qanday ko'rinishini chuqur tafsilotlar va rasmlardan ataylab chetlab o'tdim. Birinchidan, bu ish minnatdorchiliksiz bo'ladi va faqat ko'proq savollar tug'diradi. Ikkinchidan, men forumlarda telefonlarini o'ldirganliklari haqida shikoyat qiladigan foydalanuvchilar armiyasini ko'rishni xohlamayman.

    Keyingi maqolada men sizga Tweeksni qanday qilishni aytaman. Mahalliy telefon vositalaridan foydalangan holda telefon qo'ng'iroqlarini avtomatik yozib olishdan foydalanish misoli bo'ladi. E'tiboringiz uchun rahmat.

    P.S. Agar biror narsa tushunarsiz yoki chalkash bo'lsa, savollar bering - men har doim javob berishdan va tushuntirishdan xursand bo'laman.

    Ushbu qisqacha eslatmada biz o'quvchilarimizga jBart-dan foydalangan holda Android uchun dasturiy ta'minotni deodexlash haqida, shuningdek, ODEX va DEODEX proshivkalari o'rtasidagi farq haqida gapirib beramiz. Birinchidan, keling, quyidagi havolalardan foydalangan holda odex / deodex atamalari nimani anglatishini aniqlaymiz:

    Ushbu eslatmani yozish vaqtida hozirgi versiya edi jBart v1.8.9 -"Dastur Android OS asosidagi proshivkalarni tarjima qilish jarayonini avtomatlashtirish uchun moʻljallangan. Android versiyalari 2.x.x dan 4.x.x gacha (shu jumladan, Android 4.4 KitKat) qoʻllab-quvvatlanadi. Dasturning yadrosi oʻzgartirilgan apktool hisoblanadi. Bundan tashqari. proshivkani tarjima qilish, mikrodasturni deodexatsiya qilish, shuningdek, mikrodasturdan bitta apk va jar fayllari bilan ishlash imkoniyati mavjud."

    Hikoyani uzoq davom ettirmasdan, keling, amaliy misolga o'tamiz. Biz MTS-dan yaqinda yozgan dasturiy ta'minotni "o'rgatamiz". Birinchi qadam planshetdan /system/app va /system/framework papkalarini, shuningdek build.prop faylini u yoki bu tarzda yuklab olishdir. uni tizim papkasida topish mumkin. Mikrodasturning ba'zi qismlarini nusxalash uchun sizga ildiz huquqlari kerak bo'lishi mumkin (Oysters T7V 3G-da siz ularni ilova yordamida osongina olishingiz mumkin. motochopper, uni qidiruv tizimlarida osongina topishingiz mumkin). Kerakli fayl va papkalarni yuklab olganimizdan so'ng, biz ularni tizim katalogiga joylashtiramiz va ularni arxivga joylashtiramiz - system.zip, shunday qilib arxivning ildizi tizim papkasini o'z ichiga oladi va uning ichida ilova, ramka va bulid.prop pastki papkalari mavjud:

    Biz ROM API ning to'g'ri versiyasini tanlaymiz (ya'ni Android versiyasi), bizning holatlarimizda bu 4.2.x, Deodex tugmasini bosing va kuting. Amaliyot tugagandan so'ng, deodexed proshivka bilan arxiv jBART-master\output\deodexed_system.zip-da joylashgan bo'ladi. Ko'rib turganingizdek, proshivka fayllari endi .odex fayllarini o'z ichiga olmaydi, faqat .apk. Endi siz ularni o'zgartirish, tarjima qilish, tahrirlash va hokazolarga o'tishingiz mumkin. o'zgarishlar. Ammo bu butunlay boshqacha eslatma uchun mavzu. Xulosa qilish uchun shuni ta'kidlaymizki, jBart va bir nechta oddiy operatsiyalar yordamida biz deodexlangan proshivkadan qanday qilib deodexlangan proshivka olishni o'rgandik, ya'ni. "odatiy". Har kim o'z xohishi va ehtiyojlariga ko'ra o'zgartirishi mumkin bo'lgan fayllar.