聊聊Android的APK反編譯

2021-07-26 13:24:56 字數 1295 閱讀 4003

apk檔案,其實也是乙個壓縮檔案,我們可以把它的字尾改為zip格式,解壓縮後看看裡面的東西,如下:

這裡,android對xml之類檔案進行了加密,因此看到的是亂碼:

android的反編譯經歷3個步驟:

apk ---> dex/smali ---> jar

apktool ---> dex2jar ---> jd-gui

在使用apktool時若發生解析錯誤,建議使用更新版本的。

下面,開始進行反編譯:

1. 使用工具apktool,引數d**解碼(decode),另外引數b可用於打包(binary)

執行命令後目錄結構如下:

和解壓縮不一樣,解壓縮出來的xml檔案不可看,這裡的xml都是可以看到的,在smali目錄下就是原始碼了,如下部分截圖:

因為這裡混淆了**,所有類名都用a、b、c之類的字母替代了。前面解壓縮出來的dex是提供給虛擬機器執行的,是位元組碼檔案,這裡輸出的smali檔案是apktool按照dex和虛擬機器格式轉換出來的,類似於組合語言,也可以使用smaliviewr或ida等工具來看函式的呼叫位址,再配合其他工具獲取控制項的id,就可以一步步進行功能破解了,後面有時間再寫寫這部分。

(如果這步沒有生成classes.dex檔案,命令列引數加多乙個-s引數即可。)

2. 使用工具dex2jar

將前面解壓出來的classes.dex轉為jar包,如下:

這一步的輸出檔案是:classes-dex2jar.jar

3. 使用工具jd-gui檢視第2步的輸出檔案,開啟jd-gui軟體,然後開啟這個jar包檔案即可,如下圖所示:

Android應用的換膚實現(APK)

android應用換膚大概有如下幾種方式 skin apk是通過main apk skin apk的方式,需要在androidmanifest.xml檔案中配置的android shareduserid屬性值相同,從而實現主從apk能共享共享資源。實現如下 context context creat...

android中APK包的安裝

1.adb push apk 目錄是將apk傳送到手機指定的目錄 adb push test.apk sdcard test test.apk 2.adb install 電腦中apk的路徑是安裝電腦中的apk到手機 adb install users test test.apk 3.強制安裝 有時...

隨便聊聊android的原始碼

在framework層看了些android的原始碼,主要有以下兩點感受 1,很多內部類和介面,但是這些內部類和介面,在其他外部類中也會有呼叫。2,很多全域性變數貫穿各個方法中,甚至於被其他外部類呼叫,修改,因此很難把握這些變數。這兩點,導致理解源 比較困難,並且有時想對某個方法進行單元測試,基本上很...