反編譯framework原始碼的方法

2021-08-19 23:07:33 字數 1052 閱讀 1635

工作中經常遇到很多第三方應用或rom需要反編譯看原始碼實現,對於第三方應用很簡單拿到apk檔案後直接用apktool解開就可以了。但是對於系統應用或framework模組部分就不行了,因為廠包肯定會開啟odex,所以將apk或jar包pull到本地後會發現裡面只有資源檔案或meta-inf等,裡面沒有classes.dex位元組碼檔案。

但是我們知道編譯的時候開啟odex同時會在相應目錄下編譯乙份oat檔案,而oat檔案實際是個elf格式的二進位制檔案,裡面包含了verify&optimize之後的dex位元組碼檔案和相應的機器碼檔案。要想將dex位元組碼檔案提取出來,就需要用到系統提供的oatdump這個工具了。通過oatdump將dex位元組碼檔案提取出來之後,然後再用dex2jar轉換為jar包檔案,就可以通過jd-gui之類的工具直接檢視了。不過jd-gui有時候解析出來的jar檔案有問題,而且有些內容無法解析出來,那就只能通過閱讀smali來手動推導了。

以手中的nexus 為例,需要反編譯powermanagerservice的某個方法實現。具體步驟如下:

1)首先將機器中的services.jar 對應的oat檔案pull到本地:adb pull /system/framework/oat/arm/services.odex(注意機器cpuabi)

2)通過oatdump將裡面的dex檔案提取出來:oatdump --oat-file=services.odex --export-dex-to=./

在當前目錄下生成services.jar_export.dex位元組碼檔案。這裡oatdump是本地編譯rom的時候生成的,位於out/host/linux-x86/bin/oatdump

3)然後再用dex2jar-2.0工具將dex位元組碼檔案轉化為jar包。d2j-dex2jar.sh service.jar_export.dex會在當前目錄生成乙個services.jar_export-dex2jar.jar的jar檔案。

4)啟動jd-gui即可檢視services.jar-export-dex2jar.jar檔案了。

android反編譯原始碼套裝整合

在反編譯別人 的時候用起來覺得很繁瑣,所以自己就寫了乙個反編譯的shell,將別人提供的工具整合了一下,用起來十分之方便。notice 1,在使用的時候須在終端中進入 apk所在的目錄。2,第一次反編譯的時候會自動開啟原始碼,以後就可以直接使用jd gui開啟反編譯包裡面的jar檔案即可檢視原始碼。...

Android APK反編譯檢視原始碼及資源檔案

本文主要介紹如何反編譯android應用程式檢視源 資源檔案和xml檔案以及修改後重新打包成apk。鼓勵大家反編譯去學習他人的設計而不是將應用換殼後混亂市場。也可以直接使用整理的 anti droid.我們可以右擊apk檔案,開啟方式 選擇winrar壓縮檔案管理器,截圖如下 是不是跟程式的目錄結構...

browserify壓縮合併原始碼反編譯

最近在學習釘釘 乙個協作應用 桌面應用的前端原始碼時候,發現其js原始碼是用browserify做模組開發。於是想還原其原始碼的原本的目錄結構,學習它的目錄分類以及業務劃分。前言 用過browserify構建工具的應該清楚,在壓縮合併後的 的最前面,有處理模組依賴關係的 function e t,n...