Python實現Android Apk 加固及多渠道打包
前言
道高一尺,魔高一丈。現如今只做混淆的apk,在smali逆向中,可以說是裸奔。鑑於此,各大佬也都針對自己的應用進行了加固處理(加固原理自找度娘),與此同時,市面上各主流平臺也都開源推出了自己的應用加固工具,比如360加固助手。
我們海豚睡眠就是採用360加固,然後再配合美團新一代打包神器walle,來打渠道包上線的。
基本流程就是:apk包 —-》 360加固 —–》多渠道打包—–》上線
這裡有個麻煩的地方,就是360加固助手是視覺化操作,而walle是用的shell指令碼,每次加固都得開啟360加固助手手動選取apk包,那麼有沒有一種更好的方式來統一操作加固及打包呢?答案是肯定的,經過2天對Python的摸索,現學現賣,終於可以實現如題的功能。
一、Python環境搭建
就這2天的體驗的來說,python給個人的感覺就是輕,容易上手,再具體的我也說不上來1234了,各位自行Google。
Python的環境搭建(windows平臺)很簡單:
1,去Python官網下載:http://www.python.org/;
2,選擇python-xxxx.msi 檔案下載(比如我下載的是python-2.7.13.msi);
3,雙擊進行安裝;
4,安裝完成後,記得在path中設定環境變數;
5,配置完成,開啟cmd,輸入python,有列印版本號等就說明安裝成功。
二、下載360加固助手
注:這一步的主要目的就是為了幫你通過開啟的360加固助手客戶端進行賬號註冊,如果已經有賬號,這一步可以略過。
三、下載python打包工具
此工具我取名叫 PythonPackageTool,大家可以直接下載這個壓縮包。
下面就這個壓縮工具包的部分檔案作下簡要說明:
1,python指令碼 comm_multipackage.py:
用Atom等文字編輯工具或 IDEA工具開啟 comm_multipackage.py,定位到15行:
# 簽名信息相關
keystorePath = os.path.join(baseDir, "xxxxx.keystore")
keystore_alias = "xxxx"
keystore_pass = "xxxx"
key_pass = "xxxxx"
各位記得把上面的簽名信息修改為自己應用申請的簽名信息。否則會簽名失敗。
然後再定位至94行:
os.system("java -jar jiagu.jar -login " + _360JiaguUserName + " " + _360JiaguPwd)
各位可以將上面程式碼中的_360JiaguUserName 與_360JiaguPwd變數修改為自己在360加固助手上註冊的賬號與密碼,這樣可省去每次都在命令視窗輸入。
2,channelFile多渠道配置檔案
#百度/91應用商店
P0010C00001
#360應用商店
P0010C00002
#應用寶
P0010C00003
這個沒什麼可說的,根據美團的來配置就好了,將上面的P****渠道號改成自己的就Ok了。
3,執行指令碼
在PythonPackageTool解壓目錄下,按shift+滑鼠右鍵,在彈出的Dialog中選擇:在此處開啟命令視窗(M),然後在cmd中輸入python comm_multipackage.py 回車,如圖:
注:如果cmd視窗發現漢字亂碼,是因為我的python指令碼是用utf-8編碼的,這時得把cmd也切換到 utf-8編碼:
chcp 65001
或者將comm_multipackage.py檔案的頭部UTF-8改為GBK:
#!/usr/bin/python
# -*- coding: GBK -*-
執行如圖:
四、結果
待加固,多渠道打包結束後,apk存放在/mulipackage/cache/apks目錄下:
這個渠道包的名字前半部分可以修改,比如:DolphinSleep_v1.1.2_release_P0010C00001.apk,前半部分指:* DolphinSleep_v1.1.2_release*
如果想改成別的名字,則在指令碼剛開始執行的時候,它有提示* Please Input ApkName!*,你輸入的這個名字就是用來對最後的渠道包進行重新命名的,如果在開始你沒有輸入,那它將擷取加固apk的apkname進行命名。
五、題外話
Python開發工具,大夥可以選擇 PythonCharm,
這個PC要啟用碼,大家可以選擇server,然後輸入http://idea.imsxm.com/
就可以進行激活了。