本文將通過前言、apk安全測評、應用加固、位元組對齊、二次簽名、總結共6大版塊來闡述
一、前言
評判一個App是否出色,除了看它的性能、體驗外,本人認為最為重要的是它的安全性,市面上apk安全評測、加固、二次簽名的軟體不少,但本人比較喜歡也經常使用的是騰訊云,本文也將以騰訊云 — 移動應用安全的使用為開端,按步驟詳細闡述后續4大版塊的使用流程,
二、apk安全測評
apk安全測評、應用加固都是通過騰訊云 — 移動應用安全來實作的,由于騰訊云早前下架了“樂固”,導致現在只能通過網頁端在線實作上述功能,“樂固”這款軟體,集成了包括安全測評、加固、對齊、二次簽名的所有功能,但至于為什么下架該款軟體,我也不得而知,網上有很多第三方的下載地址,不是很建議去下載安裝,會有很多捆綁軟體,軟體是否被篡改也不得而知,
第一步肯定要登錄:點擊跳轉登錄頁
登錄成功后,按照下圖所示,依次點擊紅框標識的1、2:

選擇需要上傳的apk檔案,上傳成功后顯示如下圖所示界面,點擊“確認測評”按鈕后并等待一段時間(apk越大時間越長,需要耐心等待),測評結束會顯示測評結果,可以在結果中查看該應用存在的漏洞風險(會在漏洞風險展示頁詳細顯示所有可能存在的風險,并標明了風險等級和代碼修改建議,這點本人比較喜歡),

三、應用加固
如下圖所示,依次點擊紅框標識的1、2,按照步驟選擇完apk檔案并等待加固完成后,會在下方串列展示加固結果資訊:

查看加固結果如下圖所示,在圖中可以看到,下載的加固包需要重新簽名,否則該加固包是不能夠安裝的,如何二次簽名,繼續往下看,

四、位元組對齊
位元組對齊的好處是幫助作業系統更高效率的根據請求索引資源,降低記憶體消耗,
Android SDK自帶位元組對齊工具zipalign,二次簽名前,最好先進行位元組對齊操作(一般為4位元組對齊),雖然Android Studio打包的apk是默認經過位元組對齊的,但是由于經歷過應用加固步驟,不能保證該應用中的資料還處于對齊狀態,以防萬一,再進行一次位元組對齊操作,當然,不進行位元組對齊操作也是可以的,應用還是可以正常使用的,
進行位元組對齊的步驟如下所示(下面提到的apk檔案操作都是上文中下載的加固包):
- 修改apk檔案的后綴名為 .zip(其它壓縮格式也可以,主要是為了用壓縮軟體打開該檔案),修改完成后打開該檔案,洗掉下圖中紅框選中的“META-INF”檔案夾(該檔案夾經過應用加固后,簽名資訊已經被刪了,多了一些雜七雜八的檔案,沒什么用,如果不洗掉該檔案夾,后續二次簽名就無法成功);

- 洗掉成功后,將該檔案的后綴名重新改為 .apk;
- 將該檔案復制到zipalign工具所在目錄;

該工具位于sdk\build-tools\build版本目錄下,本人選取的build版本為29.0.3

上圖所示,紅框1中的zipalign.exe即為位元組對齊工具,將需要對齊的apk檔案放到該工具的同級目錄下,例如上圖紅框2所示, - 鍵盤Win+R,輸入cmd,打開命令提示視窗,cd到壓縮工具所在目錄;

- 繼續輸入
zipalign.exe -v -p 4 input.apk output.apk(命令中的input.apk為需要對齊的apk檔案名,output.apk為對齊完成后輸出的apk檔案名);

中間省略一大段運行中輸出的代碼…

如上圖所示,運行結束,出現紅框中的代碼,表示位元組對齊成功,同時可以在目錄中看到多了個位元組對齊成功后的apk檔案,如下圖所示:

五、二次簽名
簽名工具SDK也是自帶的,apksigner,該工具位于位元組對齊工具同級目錄lib的下一級,如下圖所示:

上圖紅框1即為簽名工具,紅框2為第4版塊中位元組對齊輸出的apk檔案,紅框3為該apk檔案的簽名檔案,(紅框2、3表示的檔案需要跟簽名工具在一級目錄下)
接著,繼續在命令提示視窗中依次輸入:
cd lib
java -jar apksigner.jar sign --ks key.jks --ks-key-alias releasekey output.apk
key.jks為簽名檔案,releasekey為簽名檔案的別名,output.apk為上圖紅框2所示的apk檔案,例如下圖所示:

命令中的簽名檔案別名由于隱私原因,就隱藏了,大家替換成自己簽名檔案的別名即可,如果命令列輸入沒有任何問題,會在下方顯示輸入Keystore密碼的指令,如上圖最后一行所示Keystore password for signer #1: (這里需要注意:輸入密碼的時候命令提示視窗是不會有任何字符顯示的,估計是為了隱私安全,輸入完成后直接Enter就行了),
簽名成功,在命令提示視窗不會有任何提示;反之則有錯誤提示,只需查看目錄中紅框2的apk檔案修改日期是否改變,例如下圖所示:

時間較之前最初的,變成簽名命令執行成功后的時間,想要確保簽名成功,也可輸入下述命令查看:
java -jar apksigner.jar verify -v output.apk
其中的output.apk為簽名檔案的檔案名,例如上圖中的test_align.apk,簽名成功結果如下圖所示:

六、總結
至此,從安全測評到二次簽名整一個流程就結束了,大家有什么問題可以提,本人看到后會在第一時間解答,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237188.html
標籤:其他
