วันเสาร์ที่ 3 มกราคม พ.ศ. 2558

[How to Re-odex apk/jar] สอนทำกลับ odex apk/jar ไฟล์

บทเรียนวันนี้ผมขอนำเสนอวิธีทำกลับไปยังไฟล์ odex หลังจากที่เราทำ de-odex ไฟล์เพื่อแก้ไขต่างๆ เรียบร้อยแล้วสำหรับรอมที่เป็น odex ROM ผมขอข้ามขั้นตอนต่างๆ บางขั้นตอนไปครับสงสัยตรงส่วนไหนสามารถเข้าไปอ่านใน Note ของ Page ได้ครับ

สำหรับบทเรียนนี้สมมติว่าเรามีการแก้ไข android.policy.jar เพื่อ MOD Advance Power Menu ส่วนตัวเสร็จแล้วต้องการจะ Package กลับไปในรอมศูนย์ในรูปแบบของ odex มาดูกันครับว่าทำกันยังไง ?

1. เตรียมไฟล์ android.policy.jar  ที่ผ่านการ MOD เรียบร้อยแล้ว (เครื่องที่ทำต้องผ่านการ ROOT เรียบร้อยแล้วครับ)

2. Download ไฟล์ดังนี้
dexopt-wrapper 
busybox



3.  unzip platform-tools แล้วนำไฟล์ android.policy.jar , dexopt-wrapper , busybox ใส่ลงไป



4. ต่อโทรศัพท์เข้ากับคอมพิเตอร์ครับ (อย่าลืม Enable Debugging Mode) ทดสอบการเชื่อมต่อโทรศัพท์กับคอมพิเตอร์ว่าเชื่อมต่อกันได้มั้ยโดยใช้คำสั่ง

> adb devices จะต้องแสดงผลตามรูป



5. ขั้นตอนต่อมาเราจะทำการหา BOOTCLASSPATH โดยใช้คำสั่งดังนี้

> adb shell
# echo $BOOTCLASSPATH <แล้วกด ENTER>



6. ทำการ Copy BOOTCLASSPATH เก็บเอาไว้โดยมีวิธีดังนี้

  - คลิกขวาเลือก Select All



  - เมื่อไฮไลท์สีขาวขึ้นมาขึ้นมาก็ให้กด <ENTER>



- จากนั้นก็เปิดโปรแกรม Text Editor ผมจะเลือกใช้โปรแกรม Notepad++ หาโหลดได้จาก Google ได้เลยครับ เปิดโปรแกรมขึ้นมาแล้วทำการ Paste ลงไปเลยครับ ส่วนที่ ไฮไลท์คือ BOOTCLASSPATH ที่เราต้องการ



7. เปิด DOS ขึ้นมาแล้วใช้ adb shell เข้าไปทำการสร้าง Folder ใน sdcard เพื่อทำการเก็บไฟล์
   - original framework file
   - tools (busybox,dexopt-wrapper)
   - mod เก็บไฟล์ android.policy.jar ที่เราทำการ MOD

>adb shell
# mkdir /sdcard/original
# mkdir /sdcard/tools
# mkdir /sdcard/mod



8. จากนั้นทำการ push ไฟล์ใส่ใน folder ต่างๆ 

adb push busybox /sdcard/tools/busybox
adb push dexopt-wrapper /sdcard/tools/dexopt-wrapper
adb push android.policy.jar /sdcard/mod/android.policy.jar



9. ใช้ adb shell แล้วใช้คำสั่ง > mount -o remount,rw /system เพื่อทำการยินยอมให้สามารถอ่านเขียนไฟล์ใน Folder /system ได้



10. ทำการคัดลอกไฟล์ original ของ MOD ที่เราทำการแก้ไขไปใส่ใน /sdcard/original ในที่นี้คือ anroid.policy.jar/anroid.policy.odex

cp /system/framework/android.policy.jar /sdcard/original/android.policy.jar
cp /system/framework/android.policy.odex /sdcard/original/android.policy.odex



11. ทำการ copy busybox,dexopt-wrapper ไปใส่ใน /system/xbin แล้วทำการกำหนด permission เป็น 750

cp /sdcard/tools/busybox /system/xbin/busybox
chmod 750 /system/xbin/busybox

cp /sdcard/tools/dexopt-wrapper /system/xbin/dexopt-wrapper
chmod 750 /system/xbin/dexopt-wrapper



12. ทำการ copy MOD (android.policy.jar) ไปไว้ใน /system/framework

cp /sdcard/mod/android.policy.jar /system/framework/android.policy.jar

13. ใช้คำสั่ง dexopt-wrapper + /system/framework/android.policy.jar +/system/framework/new-android.policy.odex+BOOTCLASSPATH เพื่อทำการสร้างไฟล์ odex ใหม่จาก MOD ที่เราทำการแก้ไขมาโดย

dexopt-wrapper /system/framework/android.policy.jar /system/framework/new-android.policy.odex /system/framework/core.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/webviewchromium.jar:/system/framework/com.lge.frameworks.jar:/system/framework/WfdCommon.jar:/system/framework/org.codeaurora.Performance.jar

จะได้ผลลัพธ์ประมาณนี้ครับ



14. ทำการ copy ไฟล์ original ที่เราทำการ backup ไว้ใน sdcard กลับคืนลงไปใน /system/framework

cp /sdcard/original/android.policy.jar /system/framework/android.policy.jar
cp /sdcard/original/android.policy.odex /system/framework/android.policy.odex



15. ทำการกำหนด permission ของไฟล์เป็น 777 ดังต่อไปนี้

/system/framework/android.policy.jar
/system/framework/android.policy.odex
/system/framework/new-android.policy.odex

chmod 777 /system/framework/android.policy.jar
chmod 777 /system/framework/android.policy.odex
chmod 777 /system/framework/new-android.policy.odex



16. ทำการใช้คำสั่ง dd เพื่อทำการ copy original sign ของไฟล์ android.policy.odex ให้กับ new-android.policy.odex ที่เราเพิ่งสร้างขึ้นมา

/system/xbin/busybox dd if=/system/framework/android.policy.odex of=/system/framework/new-android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc



17. ทำการ copy /system/framework/new-android.policy.odex  ไปทับไฟล์เก่า /system/framework/android.policy.odex 

cp -f /system/framework/new-android.policy.odex /system/framework/android.policy.odex



18. สุดท้ายทำการเคลียร์ไฟล์ที่ไม่จำเป็นทิ้ง 

/system/framework/new-android.policy.odex

rm /system/framework/new-android.policy.odex

จากนั้นทำการกำหนด permission ไฟล์  เป็น 644

/system/framework/android.policy.jar
/system/framework/android.policy.odex

chmod 644 /system/framework/android.policy.odex
chmod 644 /system/framework/android.policy.jar

จากนั้นออกจาก shell ใช้คำสั่ง exit แล้วทำการ Reboot เครื่องใช้คำสั่ง adb reboot

2 ความคิดเห็น: