نحوه دودکس کردن سیستم عامل با استفاده از jbart odex و deodex در اندروید چیست. باز کردن و تجزیه و تحلیل فایل اصلی

اگر شما فقط یک کاربر معمولی یک دستگاه مبتنی بر اندروید نیستید، بلکه دوست دارید سفت‌افزارهای مختلفی را نصب کنید، احتمالاً در انجمن‌ها و سایت‌های مختلف درباره سیستم‌افزار «odexed» و «deodexed» شنیده‌اید یا خوانده‌اید. تفاوت در چیست؟ به طور خلاصه، سیستم عامل Deodex برای اصلاح مناسب تر است. توسعه دهنده سیستم عامل deodexed می تواند به طور مستقل ظاهر نمادها را تغییر دهد، منوهای مختلف را پیکربندی کند و غیره. بیایید در مورد همه چیز با جزئیات بیشتر به شما بگوییم.

Deodex چیست؟

سیستم عامل اندروید، مانند هر برنامه دیگری، دارای بخش "اجرایی" ویژه ای است که برای انجام اقدامات از پیش برنامه ریزی شده طراحی شده است. همانطور که خودتان می بینید، این دستورات در یک فایل جداگانه classes.DEX قرار می گیرند که در فریمور موجود است.

اغلب، در سیستم عامل رسمی، سازنده این فایل را به خارج از سیستم عامل منتقل می کند تا سرعت کار را افزایش داده و میزان حافظه اشغال شده توسط سیستم عامل را کاهش دهد. انتقال به Android 5.0 با محیط اجرای ART به طور قابل توجهی روند راه اندازی و نصب برنامه ها را تغییر داد، اما مفهوم odex و deodex حفظ شد.

مزایا و معایب سیستم عامل Odex و Deodex


- فرآیند اصلاح سیستم عامل پیچیده تر
+ افزایش اندک در عملکرد سیستم عامل
+ صرفه جویی در فضا هنگام نصب برنامه ها


+ سفارشی سازی سیستم عامل ساده شده
- برای نصب اپلیکیشن ها به فضای بیشتری نیاز دارید

چگونه سیستم عامل Deodex را دریافت کنیم؟

قبل از شروع فرآیند Deodex کردن سیستم عامل، یکسری شرایط باید رعایت شود. اولین قدم این است که آن را بر روی کامپیوتر خود نصب و پیکربندی کنید. در مرحله بعد، ما باید حقوق ریشه را در دستگاه تلفن همراه خود به دست آوریم، هر فایل منیجر با دسترسی به پارتیشن سیستم را نصب کنیم و پوشه های زیر را در حافظه دستگاه یا کارت microSD کپی کنیم.

/برنامه
/priv-app
/چارچوب


Deodex با استفاده از JoelDroid Batch Deodexer

این ابزار فقط با دستگاه های مبتنی بر Android نسخه 5.0 و بالاتر کار می کند. همچنین باید خود برنامه را نصب و دانلود کنید.


  • بایگانی را با ابزار ]JoelDroid Lollipop Batch Deodexer V 2.5 باز کنید.

  • پوشه های ذخیره شده قبلی برنامه، برنامه خصوصی، چارچوب

  • ابزار JoelDroid Lollipop Batch Deodexer را راه اندازی کنید، روی دکمه «مرور» کلیک کنید و دایرکتوری را در رایانه خود که در آن کپی کرده اید نشان دهید. برنامه، برنامه خصوصی، چارچوب

  • روی دکمه کلیک کنید "شروع فرآیند"

Deodex با استفاده از Deodexer برای Android Runtime

ابتدا آرشیو را دانلود کرده و آن را از حالت بسته خارج کنید. روند بعدی هیچ تفاوتی با ابزار قبلی ندارد:


  • پوشه های ذخیره شده قبلی برنامه، برنامه خصوصی، چارچوبشما باید یک دایرکتوری جداگانه در رایانه خود قرار دهید.

  • برنامه Deodexer for Android Runtime را اجرا کنید، دایرکتوری را در رایانه خود که در آن کپی کرده اید مشخص کنید. برنامه، برنامه خصوصی، چارچوب

  • روی دکمه کلیک کنید "اجرا کردن"و منتظر بمانید تا فرآیند دودکساسیون کامل شود.

Deodex با استفاده از Jbart

برخلاف برنامه های کاربردی قبلی که فقط می توانند با دستگاه های مبتنی بر اندروید 5.0 و بالاتر کار کنند، این ابزار به سیستم عامل متصل نیست. می توانید Deodex را برای هر دستگاهی از Android 2.3.x Ginerbread تا Android 6.0 Marshmallow بسازید.



هر یک از شما کلمات "deodex" یا "odex" را بیش از یک بار شنیده اید. معمولاً آنها در جایی یافت می شوند که میان افزارهای مختلف برای دستگاه شما پست شده است، به عنوان مثال، در XDA-Developers یا 4pda. پس یعنی چه، DEODEX یا ODEX؟ تفاوت آنها چیست؟ چگونه DEODEX درست کنیم؟ پاسخ این سؤالات و سؤالات دیگر را در شماره بعدی خلاصه «چیست...» خواهید یافت.
Odex (بهینه سازی شده Dalvik Executable File) فایلی است که در یک پوشه با برنامه های سیستمی قرار دارد و کدهای خود برنامه را ذخیره می کند. همانطور که می دانید، هر برنامه به دستورالعمل هایی نیاز دارد که به لطف آنها (برنامه) یک عملکرد یا کار دیگر را انجام می دهد. این دقیقا همان کد برنامه ای است که قبلا توضیح دادم. اگر می‌خواهید هر فایل سیستمی را تغییر دهید، باید هنگام نصب میان‌افزار odex، هم خود فایل odex و هم apk. را بررسی کنید. از اینجا مشخص می شود که این روند چندان آسان نخواهد بود. به همین دلیل است که امکان فریمور deodex اجرا شد.

همانطور که می دانید، در سیستم عامل odex فایل ها به صورت تصادفی ذخیره می شوند. با این حال، به اصطلاح، در مورد دئودکس چنین اختلالی وجود ندارد. همه فایل‌های موجود در deodex مانند یک بایگانی .zip ذخیره می‌شوند، اما در مورد ما در apk. بسته‌بندی می‌شوند. به همین دلیل، جداسازی برنامه برای تغییرات بیشتر آسان‌تر می‌شود و با توجه به این که همه چیز در یک مکان بسته بندی شده است، سیستم عامل deodex شاید فضای کمتری را اشغال کند.

با این حال، deodex را نمی توان بی پایان ستود. عیب اصلی deodex این است که بارگذاری برنامه ها کمی بیشتر از odex طول می کشد. به احتمال زیاد، کاربر متوجه این موضوع نخواهد شد. اما نمی توانم توجه نکنم که هم مزیت odex و هم مضرات deodex این است که همه برنامه های سیستمی در odex برای یک دستگاه خاص توسط خود سازنده بهینه شده اند. و این بدون شک یک مزیت سیستم عامل odex است.

تقریباً فراموش کردم ذکر کنم که هنگام نصب تغییرات آماده مختلف در سیستم برای دستگاه خود، باید سیستم عامل deodex داشته باشید.

احتمالاً در این شرایط معنای اصطلاحات روشن است. و من حاضرم شرط ببندم که برخی از افراد از قبل می خواهند دودکس را امتحان کنند. تعداد زیادی دستورالعمل برای سیستم عامل deodex در شبکه جهانی وب وجود دارد. با این حال، من جرات نمی کنم شما را برای جستجوی آنها در گوگل بفرستم، اما به سادگی تمام این روند را در سکوت یادداشت می کنم و سعی می کنم همه چیزهای کوچک را برجسته کنم.

دستورالعمل های نسخه های مختلف اندروید یکسان نیست. با توجه به این که اندروید 5.0 آب نبات چوبی روی دستگاه من نصب شده است، دستورالعمل های deodex را به طور خاص برای این نسخه خواهم نوشت.

  1. ابتدا باید یک ابزار ویژه، JoelDroid Lollipop Batch Deodexer را در رایانه شخصی خود دانلود کنیم. این ابزار برای کار کردن به یک برنامه جاوا نیاز دارد. توجه داشته باشم که در موارد مکرر، یک برنامه جاوا مسیر خود را اشتباه و نادرست می نویسد. به همین دلیل باید طبق این دستورالعمل این مسیر را به صورت دستی ثبت کنید.
  • پس از این، ما باید هر مدیر فایلی را که از طریق آن باید سه پوشه اصلی سیستم - APP، PRIV-APP، FRAEMWORK - را در یک پوشه جداگانه روی کارت SD کپی کنیم، روی دستگاه خود که روی Android 5.0 Lollipop اجرا می‌شود، نصب کنیم. آنها در پوشه ریشه System قرار دارند.


  • بعد، ما باید پوشه MyROM را در ریشه هر درایو داخلی رایانه شخصی خود ایجاد کنیم. سپس یک پوشه دیگر در این پوشه ایجاد می کنیم اما با نام System. در تئوری، شما باید مسیر زیر را دریافت کنید - E:\MyROM\system. جایی که "E" حافظه داخلی شما (هارد دیسک) است
  • پوشه های سیستمی که در مرحله دوم کپی کردیم باید به پوشه E:\MyROM\system منتقل شوند.
  • اکنون، در تئوری، ما همه چیز را آماده کرده ایم و می توانیم به نقطه DEODEXATION برویم.
  • ابزار JoelDroid Lollipop Batch Deodexer را که قبلاً نصب شده است راه اندازی کنید.
  • با کلیک بر روی دکمه "Browse" در ابزار، باید مسیر E:\MyROM\system را نشان دهیم.
  • مسیر نشان داده شده است، همه چیز آماده است. تنها کاری که باید انجام دهیم این است که کلید "Start Prosecc" را فشار دهیم، پس از آن deodexation شروع می شود. این روش حدود 10-15 دقیقه طول می کشد.
  • پس از اتمام deodexation، باید فایل‌های به‌دست‌آمده را که در مسیر E:\MyROM\system قرار دارند، در یک درایو فلش MicroSD روی دستگاه شما کپی کنیم.
  • در مرحله بعد، باید AROMA FileManager را دانلود کرده و از طریق بازیابی سفارشی روی دستگاه خود نصب کنید. اما قبل از نصب باید در قسمت Mount در صورت انتخاب نشدن System را انتخاب کنیم.
  • بعد از همه اینها باید به ریشه فایل سیستم برویم و پوشه های APP، PRIV-APP و FRAEMWORK را از پوشه System حذف کنیم، فقط آنها را حذف کنیم، زیرا هنگام کپی کردن پوشه های ARM باقی می مانند و کل فرآیند را در نظر بگیرید. ، به زهکشی رفته است.
  • سپس، پوشه‌های deodex را که قبلاً در مرحله 9 منتقل شده‌اند، در پوشه System در ریشه کل فایل سیستم کپی کنید.
  • پس از این، ما باید اسکریپتی را فلش کنیم که مجوزها را برای پوشه ها (RWXRX-RX)، فایل های apk. و فایل های xml. (RW-R-R) تنظیم می کند.
  • در مرحله بعد باید cache را پاک کنیم و dalvik/art را پاک کنیم. دستگاه را راه اندازی مجدد کنید و از سیستم عامل deodex که دریافت کرده اید لذت ببرید.

  • مطمئن شوید که DEODEX را نصب کرده اید - می توانید سیستم عامل را با استفاده از دستورالعمل های کوتاه زیر به روز کنید: D


    من کاملاً معتقدم که در مورد اساسی ترین موارد در مورد اصطلاحات ODEX و DEODEX صحبت کرده ام و این مقاله می تواند تکمیل شود. از همه شما برای توجه شما متشکرم، لطفا به مقاله امتیاز دهید، یک روز خوب و یک تابستان موفق داشته باشید!

    کاربران اندروید را می توان به دو گروه تقسیم کرد. اولین مورد کسانی هستند که برای آنها مهم است که کار پایدار داشته باشند و تلفن به سادگی کار کند. دومی کسانی هستند که نمی توانند منتظر بمانند تا عملکردهای جدید را امتحان کنند و سیستم عامل دیگر گوشی خود را بررسی کنند و واقعاً عاشق سرهم کردن با تلفن خود هستند. این همان جایی است که تفاوت اصلی بین سیستم عامل ODEX و DEODEX نهفته است.

    سیستم عامل ODEX (odexed).– اینها سیستم عامل اندروید رسمی، مارک دار یا کارخانه ای هستند. DEODEX (deoxified) سفت‌افزارهایی هستند که توسط کاربران اصلاح شده‌اند.

    چرا چنین تمایزی؟

    سیستم عامل "Odexed" بلافاصله با وجود فایل هایی با پسوند odex در پوشه /system/app خود را نشان می دهد. مخفف odex به معنای "فایل اجرایی بهینه شده Dalvik" است. این نوع فایل برای یک ساختار سیستمی واضح که حاوی تمام اطلاعات مربوط به برنامه است، بسیار ضروری است. اندروید بدون اینکه فایل های apk را از حالت فشرده خارج کند، بلافاصله داده ها را دریافت می کند. فایل‌های odex معمولاً در Dalvik-cache بارگذاری می‌شوند که اطلاعات مربوط به برنامه‌هایی را که کاربر اغلب استفاده می‌کند ذخیره می‌کند. سرعت سیستم به طور قابل توجهی افزایش می یابد.

    مزایای سیستم عامل ODEX را می توان یادداشت کرداین واقعیت که برنامه ها سریعتر باز می شوند و فایل های apk فضای کمی را اشغال می کنند. از معایب آن می توان به سختی هک و تغییر برنامه ها اشاره کرد. اما اکثر کاربران به این نیاز ندارند؛ آنها برای سرعت و ثبات سیستم ارزش قائل هستند.

    به عنوان مثال، چنین سیستم عاملی یک راه حل ایده آل برای کسانی است که فقط می خواهند بازی ها را در رایانه لوحی اندروید (http://vipsmart.org/all-genres/tablet/) دانلود کنند.

    DEODEX



    در سیستم عامل "deodexed"، اطلاعات برنامه در فایل apk موجود است. کدی که معمولاً در یک فایل odex درج می شود در یک apk به نام classex.dex گنجانده می شود.

    مزایای اصلی چنین سیستم عاملی این است که تغییر آنها بسیار آسان تر است (همه داده ها در یک مکان هستند) و برنامه های سیستم راحت تر حذف می شوند.

    یکی از معایب این است که برنامه ها زمان بیشتری برای راه اندازی دارند. اما این ایراد چندان قابل توجه نیست. Dalvic-cache تمام داده های مربوط به برنامه هایی را که کاربر اغلب استفاده می کند ذخیره می کند. و برنامه‌ها فقط پس از پاک کردن حافظه پنهان Dalvic زمان زیادی برای بارگذاری نیاز دارند. به عنوان مثال، پس از نصب به روز رسانی سیستم عامل یا در موارد دیگر.

    به طور خلاصه، می توان با اطمینان گفت که سیستم عامل "odexed" (کارخانه ای) برای کسانی که به سرعت و ثبات اهمیت می دهند توصیه می شود. موارد "Deoxed" (سفارشی) بیشتر برای کسانی مناسب هستند که برای آنها مهم است که سفت‌افزار را کاملاً مطابق با نیازهایشان سفارشی کنند، عملکردهای جدید را امتحان کنند و در سیستم Android "عمیق‌تر" کنند.

    سلام هابر!

    چندین سال پیش، زمانی که برای اولین بار با اندروید آشنا شدم، از یکی از همکارانم شنیدم که اندروید امکان نصب فریمور اصلاح شده یا خانگی را فراهم می کند. صادقانه بگویم، آن زمان از آن دور بودم. و حتی نیم سال پیش من به سختی به چنین چیزهایی علاقه مند بودم. در اعماق قلبم مطمئن بودم که کاری که سازنده انجام می دهد قبلاً برای استفاده عادی در نظر گرفته شده بود.

    تصور کنید وقتی گوشی را از چین خریدم، ناامیدی من را تصور کنید، جایی که تنظیمات کارخانه استفاده از گوگل، اسکایپ، فیس بوک و سایر برنامه ها را ممنوع کرده بود. اصولاً می شد روی بعضی چیزها چشم پوشی کرد، اما وقتی تلفن من نیاز به استفاده از حساب Google نداشت، قول هایی دادم که بدون توجه به اتفاقی که برای من می افتد، قطعاً آن را متوجه می شوم.

    نیم سال گذشت و سیستم عامل سفارشی من با موفقیت در سراسر جهان استفاده می شود.

    در این سری از مقالات نحوه انجام برنامه نویسی معکوس برای اندروید، پیاده سازی وصله ها، ترفندها و مودها بحث خواهد شد.

    مقدمه

    بنابراین! اجازه دهید ابتدا مفاهیمی را که در آن استفاده می شود تعریف کنیم داده شدهمقاله. با این حال، درک معمول شما ممکن است بسیار متفاوت باشد.

    پچ- تغییر یا جایگزینی کد برنامه موجود به منظور اصلاح الگوریتم برنامه.
    ماد- به عنوان یک قاعده، اضافه کردن عملکرد اضافی به کد برنامه موجود بدون تغییر الگوریتم.
    نیشگون گرفتن و کشیدن- بهبود عملکرد برنامه به منظور تسهیل دسترسی به پارامترهای سیستم.

    همچنین می خواهم توجه داشته باشم که تمام مثال ها برای یک گوشی HTC در نظر گرفته می شود، اما این بدان معنا نیست که این اطلاعات در گوشی های دیگر قابل استفاده نیست.

    آماده سازی محیط

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

    1 . Android SDK. این یک محیط توسعه اپلیکیشن برای اندروید است. برای ایجاد تغییرات، ما قطعاً باید کد برنامه خود را بررسی کنیم. محیط توسعه بهترین چیزی است که می توانیم استفاده کنیم.
    2 . آشپزخانه اندروید. این ابزار به شما امکان می دهد تا با تصاویر پارتیشن های سیستم سفت افزار رسمی یا غیر رسمی کار کنید.
    3 . JD-GUI. دیکامپایلر کد جاوا. می خواهم فوراً خاطرنشان کنم که این بهترین دیکامپایلر از نظر سهولت استفاده است.
    4 . دی کامپایلر جاوا. یکی دیگر از کامپایل‌کننده‌ها، یا جداسازی‌کننده‌های کد برنامه زبان جاوا، که برخی دوست دارند آن را بخوانند. استفاده از آن راحت نیست، اما کدهایی را که JD-GUI گاهی اوقات درک نمی کند، تجزیه می کند.
    5 . کوچک. یک جداکننده دیگر، اما این بار کد دالویک. smali برای جداسازی و backsmali برای اسمبل کردن کد مورد نیاز است.
    6 . dex2jar. ابزاری برای تبدیل فایل های اجرایی کد Dalvik.

    تبدیل سیستم عامل

    البته سیستم عاملی که از سازنده بر روی گوشی خود دارید برای کاهش مصرف برق بهینه شده است. برای اینکه سیستم عامل تغییر کند، باید به فرمتی تبدیل شود که امکان تغییر کد را فراهم کند. برای این کار از Android Kitchen استفاده می شود. البته، شما می توانید این کار را با دستان خود انجام دهید، همانطور که قبلاً انجام دادم تا زمانی که این "آشپزخانه" را پیدا کردم. می توانید در اینترنت نحوه حذف ناحیه سیستم از گوشی، نصب محیط و ساخت سیستم عامل DEODEX را بخوانید. اگر قبلاً چیزی متوجه نشده اید، فکر می کنم ارزش آن را دارد که این مقاله را تا زمانی که تجربه کافی به دست آورید، درنگ کنید.

    پس از اینکه سیستم عامل از یک نسخه بهینه شده (ODEX - کد اجرایی dalvik بهینه شده، در صورتی که حافظه من به درستی استفاده می کند) به DEODEX (یعنی بهینه سازی نشده) تغییر کرد، همه فایل های اجرایی برای اصلاح آماده هستند.

    تغییرات مستقیم

    ایجاد پچ
    همانطور که قبلاً گفتم، تلفن من در ابتدا از استفاده از گوگل منع شد. خوب، مهم نیست، شما نمی توانید به PlayStore بروید، نمی توانید یک حساب ایجاد کنید، دفترچه تلفن واقعاً همگام نمی شود. چرا به چنین اندرویدی نیاز دارید؟ پس از مدت ها حفاری در لاگ خود دستگاه، ورودی هایی پیدا کردم که می گفتند استفاده از گوگل ممنوع است. ناراحت کننده ترین چیز در مورد Android این است که شما لاگ را می بینید، اما نمی دانید کدام برنامه سیستمی آن را تولید می کند. برای اینکه بفهمم پاهایم از کجا می‌آیند، مجبور شدم همه برنامه‌های سیستم را به کد جاوا جدا کنم. زمان زیادی طول کشید، اما من هنوز از کاری که انجام دادم هنگام تجزیه و تحلیل و یافتن کد مناسب استفاده می کنم. مراحل دستیابی به چنین ابزارهایی به شرح زیر است:
    1 . از تمام سیستم عامل ها DEODEX بسازید
    2 . سیستم عامل جدید DEODEX شما باید مونتاژ شود و روی گوشی شما فلش شود. نحوه انجام این کار موضوع مقاله دیگری است.
    3 . از هر فایلی که در /system/framework قرار دارد، فایل classes.dex را استخراج کرده و با استفاده از dex2jar به JAR تبدیل کنید.
    4 . هر JAR حاصل را در JD-GUI باز کنید و دوباره در کد منبع ذخیره کنید
    5 . کد منبع را از بایگانی باز کنید.

    در پایان، به تعداد پوشه‌های موجود در فایل‌های JAR در /system/framework رسیدم و هر پوشه دارای ساختار کد منبع جاوا بود.
    از طریق دستکاری های ساده، به سرعت مکانی را پیدا کردم که ورودی ها را در logcat ایجاد می کرد.

    ما کل منطق ممنوعیت را در نظر نخواهیم گرفت، زیرا هر مورد داستان جداگانه ای است. من مجبور شدم چند ساعت وقت بگذارم تا جایی که بررسی ها انجام شده است، یک نمودار بلوکی از الگوریتم را در ذهنم ساختم و فهمیدم که کجا باید بروم تا کمی الگوریتم را "تخریب کنم".

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

    کد داخل فایل بود HTCExtension.jarو کلاسی که حاوی این زیربرنامه بود در آن بود

    باز کردن و تجزیه و تحلیل فایل اصلی
    1 . ابتدا باید فایل اصلی DEODEX JAR را برداریم که مسئول بخشی از کد مورد نیاز ما است. در مورد ما HTCExtension.jar.
    2 . با هر بایگانی باز کنید و classes.dex را از آنجا بیرون بکشید
    3 . از مبدل dex2jar برای تبدیل آن به فایل JAR استفاده کنید. دستور: dex2jar.bat classes.dex
    4 . فایل classes_dex2jar.jar به دست آمده را در JD-GUI باز کنید.
    5 . بله، اغلب JD-GUI کد را نه آنطور که در نسخه اصلی به نظر می رسد، از بین می برد، قابل درک است، اما کاملاً قابل خواندن است. در کد منبع می بینیم که زیرروال پارامترهای پروژه و پرچم زبان سیستم عامل را بررسی می کند. در مورد تاسف بار ما، TRUE برگردانده می شود.
    بولین استاتیک عمومی isChina() (اگر ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag =(HtcBuildFlag.Htc_PROJECT_flag ==Htc_PROJECT_flag) 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) بازگشت درست؛ بازگشت نادرست؛ )
    6 . برای ساختن پچ باید خود کد دالویک را جدا کنیم. برای این کار از باکسمالی استفاده می کنیم. راحت ترین راه ایجاد یک پوشه جداگانه و قرار دادن سه فایل در آنجا با هم است: HTCExtension.jar, smali.jarو باکسمالی.جار. دستور java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar را بدهید

    این API برای نسخه اندروید شما است. برای JB 16 است
    - پوشه ای که تمام فریمورک های فریمور در آن قرار دارند.

    در مورد من این دستور بود
    java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCEextension -x HTCExtension.jar
    7 . در پوشه تازه ایجاد شده ما، پوشه HTCExtension و فایل های ما با کد Dalvik در آن ظاهر شد.
    8 . یافتن فایل در طول مسیر \com\htc\util\contacts\BuildUtils$Customization.javaو به کد نگاه کنید:
    .method public static isChina()Z .registers 3.prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/0x1 v1 , 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/HtcBuildFlag/ ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/Hctflag>Build/htflag Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S1,3,if_2 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 297:00,00,0,4, . روش
    9 . ترسناک است، اینطور نیست؟ هیچ چیز مشخص نیست. اما این یک مشکل قابل رفع است. با ایجاد چند پچ خود و در نتیجه کسب تجربه، می توانید به راحتی کد را بدون ابزار شخص ثالث تغییر دهید. در مورد ما، در این کد
    .prologue const/4 v0, 0x1 به متغیر v0 مقدار 1 یعنی درست است. سپس انواع چک وجود دارد، و اگر گوشی چینی نباشد، مقدار متغیر تغییر می کند:
    خط 297 const/4 v0، 0x0 goto:goto_13
    10 . ساده ترین راه برای نجات پدر دموکراسی روسیه، تغییر کد به شکل زیر است:
    .prologue const/4 v0, 0x0، یعنی مقدار متغیر را از 1 به 0 تغییر دهید. یعنی مهم نیست که چه باشد، مقدار FALSE همیشه برگردانده می شود و در JD-GUI کد شبیه به حالت عمومی استاتیک است. بولین isChina() (اگر (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag =(laFROJECT_flag ==(laFROJECT_flag ==23Ht)_cT); && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) بازگشت نادرست؛ بازگشت نادرست؛ )
    11 . بله، روش کار خواهد کرد. اما ما به دنبال راه های آسان نیستیم - این بار. دوم اینکه دقیقاً زیبا نیست. من کد چیزی شبیه به آن را می خواهم
    بولین استاتیک عمومی isChina() (بازگشت نادرست؛)
    12 . چگونه می توانیم کد Dalvik را برای این کد منبع دریافت کنیم؟ برای مبتدیان یک ترفند کوچک انجام می دهیم.

    ایجاد کد دالویک
    1 . Android SDK را باز کنید.
    2 . ما یک پروژه جدید ایجاد می کنیم و کد زیر را در تنها کلاس آزمایشی خود می نویسیم
    بسته ru.habrahabr.test; آزمون کلاس عمومی (بولین استاتیک عمومی isChina() (بازگشت نادرست؛ ))
    3 . ما پروژه خود را کامپایل می کنیم و سپس برنامه اسمبل شده را از فضای کاری می گیریم.
    4 . ما برنامه اسمبل شده را در پوشه ای قرار می دهیم که فایل JAR را gutted است.
    5 . دستور java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk را بدهید
    6 . ما برنامه جدید ساخته شده را در کد Dalvik جدا کردیم.
    7 . فایل test.smali ما را باز کنید و کد آن را ببینید
    روش عمومی static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end متد
    8 . تمام شد، کد وصله آماده است.
    غلتاندن یک پچ
    1 . کد دالویک پر از نشانگرهایی است که خطی از کد را در فایل منبع اصلی نشان می دهد. این در هنگام نمایش خطاها، در صورت وجود، در برنامه شما ضروری است. کد همچنین بدون تعیین خطوط به خوبی کار می کند.
    2 . خطوط را با شماره گذاری خط حذف می کنیم، روش (زیر روال) را کپی و جایگزین می کنیم \com\htc\util\contacts\BuildUtils$Customization.javaفایل.
    .method public static isChina()Z .registers 1.prologue const/4 v0, 0x0 return v0 .end متد
    3 . فایل را ذخیره کنید. بله، یادم رفت بگویم، شما به یک ویرایشگر معمولی، به عنوان مثال Notepad++ یا EditPlus نیاز دارید. چه کسی کدام را دوست دارد؟
    کامپایل و ساخت یک فایل JAR پچ شده
    1 . با استفاده از backsmali، فایل JAR خود را gutted کردیم، و اکنون باید آن را دوباره کنار هم قرار دهیم.
    2 . دستور java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex را بدهید
    3 . فایل classes.dex در پوشه ما ظاهر می شود
    4 . باز شدن دوباره HTCExtension.jarبا یک بایگانی فایل کنید و آرشیو موجود در آن را جایگزین کنید classes.dexبه یک تازه ایجاد شده ما
    5 . همین، مال ماست HTCExtension.jarحاوی کد برنامه اصلاح شده است.
    جایگزین کردن فایل اصلی با فایل وصله شده
    معمولاً اسکریپت های خاصی برای کاربران عادی ایجاد می شود که از طریق بازیابی جایگزین می شوند. اما ما علاقه ای به این موضوع نداریم. اولاً طولانی و خسته کننده است و ثانیاً ما کاربران باتجربه ای هستیم و می توانیم ظرافت هایی را تحمل کنیم.

    1 . اگر از قبل سفت‌افزار DEODEX دارید و دسترسی روت دارید، می‌توانید فایل کاری فعلی را با دستورات زیر جایگزین کنید:

    فشار Adb 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@ [ایمیل محافظت شده]@classes.dex راه اندازی مجدد

    اولین دستور فایل پچ شده را روی فلش درایو آپلود می کند
    فرمان دوم پوسته را باز می کند
    دستور 3 دسترسی root را می دهد
    فرمان چهارم سیستم را در حالت خواندن/نوشتن سوار می کند
    دستور پنجم یک نسخه پشتیبان از فایل ایجاد می کند
    دستور ششم فایل موجود را با فایل جدید وصله شده بازنویسی می کند.
    فرمان هفتم مجوزها را پیکربندی می کند
    دستور هشتم کش را حذف می کند
    فرمان نهم دستگاه را راه اندازی مجدد می کند.

    2 . ممنون که تا اینجا خوندید، کم مونده.
    3 . پس از راه اندازی مجدد، کد وصله شده جدید شما اعمال می شود.
    4 . اگر کد کار نمی کند یا خطایی رخ می دهد، با استفاده از ترکیب های ساده می توانید نسخه پشتیبان را برگردانید.
    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@ [ایمیل محافظت شده]@classes.dex راه اندازی مجدد

    پایان

    بله، برخی فکر می کردند این مقاله خیلی خاص است، برخی درک آن را دشوار و برخی آن را بی فایده می دانستند. من عمداً از جزئیات عمیق و تصاویری که چگونه همه چیز زنده و در عمل به نظر می رسد اجتناب کردم. اولاً، این کار بدون تشکر خواهد بود و فقط سؤالات بیشتری را ایجاد خواهد کرد. ثانیاً، من نمی خواهم ارتشی از کاربران را در انجمن ها ببینم که از کشته شدن تلفن خود شکایت دارند.

    برای مقاله بعدی به شما خواهم گفت که چگونه Tweeks را بسازید. نمونه ای از استفاده از ضبط خودکار تماس های تلفنی با استفاده از ابزارهای تلفن بومی وجود خواهد داشت. با تشکر از توجه شما.

    P.S. اگر چیزی واضح یا گیج کننده نیست، سؤال بپرسید - من همیشه خوشحال خواهم شد که پاسخ دهم و توضیح دهم.

    هنگام استفاده از سیستم عامل اندروید مختلف، احتمالاً با مفاهیمی مانند "odexed" و "deodexed" مواجه شده اید. و اغلب، هنگام انجام هرگونه دستکاری با سیستم عامل، باید بدانید که آیا "odexed" یا "deodexed" است تا کاری احمقانه انجام ندهید. پس پشت این دو اصطلاح چیست؟

    رام Odexed

    اگر سیستم عامل به صورت odex مشخص شده باشد، در پوشه برنامه های سیستمی /system/app فایل هایی با پسوند پیدا خواهید کرد. .odex. این پسوند مخفف ""Optimized Dalvik Executable File" است. علاوه بر فایل APK معمولی، یک کپی odex از آن نیز خواهید یافت. برای مثال Browser.apk و browser.odex.

    فایل odex چیست؟

    این فایل در درجه اول به سازماندهی ساختار هر برنامه ای کمک می کند، حاوی دستورالعمل های برنامه است و به اندروید اجازه می دهد تا بدون جستجو و استخراج غیر ضروری از فایل apk. به سرعت به آنها دسترسی داشته باشد. فایل‌های Odex مستقیماً در حافظه پنهان ماشین مجازی جاوا "dalvik" بارگذاری می‌شوند، این به سیستم اجازه می‌دهد تا بسیار سریع‌تر کار کند.

    مزایای سیستم عامل Odexed

    برنامه ها بسیار سریعتر راه اندازی می شوند زیرا کد آنها از قبل در حافظه نهان dalvik بارگذاری شده است. اندازه فایل‌های apk کوچک است، بنابراین فضای کمتری را اشغال می‌کنند.

    معایب سیستم عامل Odexed

    برنامه modding/themes/hacking بسیار پیچیده تر می شود زیرا کد اکنون در دو مکان مختلف قرار دارد. اگر هر برنامه ای را حذف کنید، فایل odex. نیز باید حذف شود. اگر آن را حذف نکنید، ممکن است خطاهایی رخ دهد.

    رام دیودکس شده

    در مورد این نوع سیستم عامل، تمام دستورالعمل ها و کدهای برنامه ها در فایل های apk. قرار دارند. کدی که در فایل odex ذخیره شده بود، اکنون در apk. به نام جاسازی شده است classes.dex.

    مزایای سیستم عامل Deodexed

    Deodexed برای مودینگ/موضوع/هک کردن بسیار ساده تر است زیرا همه کدها اکنون در یک فایل apk. هستند. حذف برنامه های سیستم آسان تر است زیرا فقط باید یک فایل APK را حذف کنید.

    معایب سیستم عامل Deodexed

    برنامه ها کندتر شروع می شوند. اما نه تنها برنامه ها، بلکه خود سیستم نیز زمان بیشتری برای بارگیری نیاز دارد، زیرا محتوای برنامه از سیستم بارگیری می شود و نه مستقیم.

    سیستم عامل اندروید، که مستقیماً از تولید کنندگان دستگاه های مختلف می آید، عمدتاً odexed است. سیستم عامل سفارشی، در 9 مورد از 10 مورد، deodex شده است. آنچه ما دریافت می کنیم این است که سیستم عامل odexed سرعت عملکرد بهتری دارد، Deodexed برای هک، مودینگ و سایر دستکاری ها مناسب تر است. همین است، به طور خلاصه در مورد موضوع اصلی.