一、需求:想要修改一個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.
純手打,累。有用請點贊關注