对于app应用完整性校验的一些方法~~

    apk应用完整性即移动客户端程序安装后,在每次启动时都会对自身文件进行完整性进行校验。防止攻击者通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有⾃校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。

完整性校验步骤,下面使用两种方法:

方法一:自定义修改

(一般用方法一就好了,简单方便一点)

1、修改apk的后缀名为zip;

2、修改logo图片,直接在该zip里面修改,不要将zip解压(注意图片名字不要变);

3、再将原先的zip改回apk后缀名(一定要是原来的zip,不能将第一步的zip解压修改图片后再重新压缩,一定要是在该zip里面直接修改!原因大概就是如果你是解压后再修改图片,再压缩回去的话,那文件就变了);

4、在安卓上测试能否打开该apk。(若成功安装,则存在问题;安装失败则说明该app的完整性校验没有问题)

方法二:Apktools+windows签名工具

    大致简化来说就是:反编译apk文件——>修改源码或资源文件——>重新打包(如果打包失败,则存在问题)——>创建自己的证书——>对打包的apk进行签名——>签名成功后,放到安卓机上是否可以成功安装。如果成功安装,则存在问题。

step 1 反编译apk文件

    这里用工具Apktools反编译apk文件。

    将apk文件放到apktools目录下,进入apktools输入以下命令:

1
apktools d xxx.apk

    反编译成功,会生成同名的文件夹。

step 2 修改源码或资源文件

    这里一般是修改app的logo图片,这样能够明显看出来变化。可以替换掉原先的logo图片,注意图片名字不要变。

step 3 重新打包

    使用工具Apktools进行打包,命令如下:

1
apktool b xxx -o xxx.apk

    如果出现以下这种情况,就是打包失败,说明该app的完整性校验没有问题。就不需要看下面的步骤了。

step 4 创建自己的证书

    打包成功之后,先创建一个自己的证书,命令如下:

1
keytool -genkeypair -keystore 密钥库名 -alias 密钥别名 -validity 天数 - keyalg RSA

    对于下面那些问题自己随便命名就好了:

    使用以下命令可查看创建的证书:

1
keytool -list -v keystore 证书名字

step 5 对打包的apk进行签名

    这里使用的windows签名工具是360Signer,打开工具,将我们刚刚创建证书的信息填进去,然后点击一键签名。

    签名成功之后,在模拟器的安卓机上面安装该程序。如果该apk安装失败,则该app的完整性校验没有问题;如果安装成功,则说明该apk的完整性校验存在问题。