本文将通过前言、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
,签名成功结果如下图所示:
六、总结
至此,从安全测评到二次签名整一个流程就结束了。大家有什么问题可以提,本人看到后会在第一时间解答。