天天看點

apktoolkit apk反編譯沒有檔案_重新編譯mono——修改apk中Assembly-CSharp.dll并重新打包...

環境:

作業系統:Mac OSX10.12.6

mono版本:unity2017.1.3p4

NDK版本:android-ndk-r10e

一.指導步驟:

1.通過apktool工具反編譯apk

2.修改反編譯得到的dll檔案,嵌入版本号

3.通過apktool工具重新打包apk

4.通過jarsigner工具重新簽名新的apk

二.實作細節

0.所有的檔案存儲在xxx/reapk目錄下

1.apktool工具擷取:https://ibotpeaches.github.io/Apktool/install

apktoolkit apk反編譯沒有檔案_重新編譯mono——修改apk中Assembly-CSharp.dll并重新打包...

2.右擊wrapper script,連結存儲為apktool。設定可執行狀态

指令行設定:chmod 777 apktool

3.然後點選find newest here下載下傳apktool.jar

4.反編譯android_tmp.apk,生成的内容在android_tmp目錄

cd xxxx/reapkecho Shall目錄$0echo 執行目錄$(pwd)echo $0 >> TestShell2.logapktool d android_tmp.apk
           

5.修改dll,并生成新的dll,覆寫舊的, version.txt存儲目前版本号,每次生成新包時再Unity3d自動更新

cd xxx/reapkecho Shall目錄$0echo 執行目錄$(pwd)echo $0 >> TestShell2.logrm -rf Assembly-CSharp.dllcat version.txt | while read versiondo# echo "version:"$versionecho 版本号$versioncd xxx/reapkecho -n $version>Assembly-CSharp.dllcat android_tmp/assets/bin/Data/Managed/Assembly-CSharp.dll>>Assembly-CSharp.dllcp Assembly-CSharp.dll android_tmp/assets/bin/Data/Managed/Assembly-CSharp.dlldone
           

6.重新打包

cd xxx/reapkecho Shall目錄$0echo 執行目錄$(pwd)echo $0 >> TestShell3.logapktool b android_tmp
           

7.重新簽名:

#!/bin/bashcd xxx/reapkecho Shall目錄$0echo 執行目錄$(pwd)echo $0 >> TestShell1.logjarsigner -verbose -keystore xxx/totem.jks -storepass store9527 -keypass key9527 -signedjar signed_apk.apk android_tmp/dist/android_tmp.apk com.packagename.lala -digestalg SHA1 -sigalg MD5withRSA
           

8.寫一個一鍵生成腳本:

cd xxx/reapk./apk_unapk.sh./apk_changedll.sh./apk_reapk.sh./apk_sign.shrm -rf android_tmpexit 1
           

9.生成結果如下:

apktoolkit apk反編譯沒有檔案_重新編譯mono——修改apk中Assembly-CSharp.dll并重新打包...

後記:本篇重點是重新修改dll、重新打包、重新簽名,如果想實際使用需要結合《重新編譯mono——Android動态更新dll》(https://www.toutiao.com/i6694897994073899531/)一起使用。

參考:https://cloud.tencent.com/developer/article/1335295

繼續閱讀