1. 程式人生 > >Python實現Android Apk 加固及多渠道打包

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 -*-

執行如圖:
360加固

這裡寫圖片描述

這裡寫圖片描述

四、結果

待加固,多渠道打包結束後,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/
就可以進行激活了。