Android apk安全测评、应用加固、字节对齐、二次签名(有这一篇就够了)

  • Post author:
  • Post category:其他


本文将通过前言、apk安全测评、应用加固、字节对齐、二次签名、总结共6大版块来阐述



一、前言

评判一个App是否出色,除了看它的性能、体验外,本人认为最为重要的是它的安全性。市面上apk安全评测、加固、二次签名的软件不少,但本人比较喜欢也经常使用的是腾讯云。本文也将以腾讯云 — 移动应用安全的使用为开端,按步骤详细阐述后续4大版块的使用流程。



二、apk安全测评

apk安全测评、应用加固都是通过腾讯云 — 移动应用安全来实现的。由于腾讯云早前下架了“乐固”,导致现在只能通过网页端在线实现上述功能。“乐固”这款软件,集成了包括安全测评、加固、对齐、二次签名的所有功能,但至于为什么下架该款软件,我也不得而知。网上有很多第三方的下载地址,不是很建议去下载安装,会有很多捆绑软件,软件是否被篡改也不得而知。

第一步肯定要登录:

点击跳转登录页

登录成功后,按照下图所示,依次点击红框标识的1、2:

安全评测

选择需要上传的apk文件,上传成功后显示如下图所示界面,点击“确认测评”按钮后并等待一段时间(apk越大时间越长,需要耐心等待)。测评结束会显示测评结果,可以在结果中查看该应用存在的漏洞风险(

会在漏洞风险展示页详细显示所有可能存在的风险,并标明了风险等级和代码修改建议,这点本人比较喜欢

)。

确认测评



三、应用加固

如下图所示,依次点击红框标识的1、2,按照步骤选择完apk文件并等待加固完成后,会在下方列表展示加固结果信息:

应用加固

查看加固结果如下图所示,在图中可以看到,

下载的加固包需要重新签名

,否则该加固包是不能够安装的。如何二次签名,继续往下看。

加固结果1



四、字节对齐

字节对齐的好处是

帮助操作系统更高效率的根据请求索引资源,降低内存消耗



Android SDK自带字节对齐工具

zipalign

,二次签名前,最好先进行字节对齐操作(一般为4字节对齐)。虽然Android Studio打包的apk是默认经过字节对齐的,但是由于经历过应用加固步骤,不能保证该应用中的数据还处于对齐状态,以防万一,再进行一次字节对齐操作。

当然,不进行字节对齐操作也是可以的,应用还是可以正常使用的。

进行字节对齐的步骤如下所示(

下面提到的apk文件操作都是上文中下载的加固包

):

  1. 修改apk文件的后缀名为

    .zip

    (其它压缩格式也可以,主要是为了用压缩软件打开该文件),修改完成后打开该文件,删除下图中红框选中的“

    META-INF

    ”文件夹(该文件夹经过应用加固后,签名信息已经被删了,多了一些杂七杂八的文件,没什么用。

    如果不删除该文件夹,后续二次签名就无法成功

    );

    安装包的文件
  2. 删除成功后,将该文件的后缀名重新改为

    .apk

  3. 将该文件复制到

    zipalign

    工具所在目录;

    build版本

    该工具位于

    sdk\build-tools\build版本

    目录下,本人选取的build版本为

    29.0.3


    zipalign工具目录

    上图所示,红框1中的

    zipalign.exe

    即为字节对齐工具,将需要对齐的apk文件放到该工具的同级目录下,例如上图红框2所示。
  4. 键盘

    Win+R

    ,输入

    cmd

    ,打开命令提示窗口,cd到压缩工具所在目录;

    cd
  5. 继续输入

    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

,签名成功结果如下图所示:

签名查询



六、总结

至此,从安全测评到二次签名整一个流程就结束了。大家有什么问题可以提,本人看到后会在第一时间解答。



版权声明:本文为baidu_35559769原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。