天天看點

Android安卓APK反編譯分析、簡單修改内容、二次打包簽名

一、需求:想要修改一個apk裡面一串字元串

環境:

apktool----https://ibotpeaches.github.io/Apktool/install/

dex2jar----https://github.com/pxb1988/dex2jar/

JD-GUI----http://jd.benow.ca/

jdk1.8.0環境

二、先反編譯解包分析:

(明确要修改哪裡的話可以跳過這步,我做這一步是為了看到部分java源代碼來分析他的邏輯流程,以及需要修改哪一塊)

首先解壓APK、把classes.dex搗鼓出來

然後用./d2j-dex2jar.sh classes.dex (注意先給定本目錄下所有腳本執行權限 chmod +x * )

把dex反編譯成*.jar檔案

用JD-GUI打開之後分析一波

得出結論:我要修改的字元串包在ShowActivity.class裡面

三、修改内容:

首先指令行下:apktool d 我的軟體.apk 

得到一個封包件夾,去并找到同名的.smali 檔案,因為.smali檔案中文本采用unicode編碼。需使用sublime打開,搜尋文本unicode編碼替換成要修改文本的unicode即可。

注:unicode<>中文轉換工具:http://tool.chinaz.com/tools/unicode.aspx

修改完後儲存smali檔案,執行指令打包:apktool b 封包件夾名 -o output.apk

接下裡就生成一個output.apk,注意這個apk目前沒有被簽名,是不能被安裝到手機裡面的。

四、簽名

首先生成jks密鑰,我是用的Android Studio生成,具體參照這裡https://blog.csdn.net/yy1300326388/article/details/48344411

注意:隻能識别檔案*.jks (也就是記得把密鑰字尾改一改)

簽名這裡用了github上面一個大佬寫的jar:

https://github.com/beilly/Android-Signature/releases/download/v1.0-alpha1/ApkSign-beilly.rar

下載下傳來解壓 然後指令行裡運作:java -jar apkSign.jar

笨蛋操作就能簽名完了

Over.

純手打,累。有用請點贊關注