解開反編譯android o的框架程式碼
阿新 • • 發佈:2018-11-01
華為mate10使用了最新的androido,並進行了預編譯,然後baksmali現在還不支援androido,導致反編譯困難,於是自己動手diy
1、 adb pull /system/framework,把整個框架的程式碼pull 出來,特別是arm64目錄下的vdex檔案
2、 從vdex檔案扣出dex檔案,並構成jar檔案,這一步可以使用16進位制編輯器,找到dex\n035開頭的magic,並把往後的內容匯出成一個classes.dex檔案,然後並壓縮到jary誰的中,注意,boot-framework.vdex裡,包括兩個dex檔案
3、 adb pull /system/app/iaware/oat/arm64/base.vdex,pull出預編譯後的vdex程式碼,並扣出dex檔案
4、 下載baksmali原始碼,編譯並除錯執行baksmali d –x base.vdex –d <2中生成的framework的.jar目錄>
5、 哪裡錯了改哪裡,還要把華為的bootclasspath替換掉原本的bootclasspath,或者直接使用 https://github.com/lcweik/smali
6、 再執行一下baksmali d –x base.vdex –d<2中生成的framework的.jar目錄>,全部都反編譯出來了,儲存在out目錄,再 smali a out –o base.dex,就行了。