基本知识 平时安装的应用位置,里面主要是odex可运行文件 /data/app 系统应用位置(需要root权限),里面主要是odex可运行文件 /system/app 应用的数据相关的位置,里面包含一些配置,缓存信息 /data/data 重打包测试测试 测试流程
检测app是否检测签名,如果未检测签名可重打包篡改app的代码再次发布
首先准备2个工具,apktool.jar和signapk.jar,其次寻找签名需要的2个证书文件pk8和pem,可以直接生成我这里直接拿别人编译好的,github上随便搜索signapk的项目,找到的下面内容
https://github.com/sunshinelyz/mykit-android-signapk
获取了之后先看之前app的样子
为了明显目的是将程序未注册改为其他的显示
拿到apk,使用apktool进行反编译, -f为apk名称 -o为生成的文件夹名称
apktool d -f app-debug.apk -o app 或 java -jar apktool.jar d -f app-debug.apk -o app此时我们当前路径下就多了app目录,打开他,目录结构如下,和使用jad和jre反编译不同,他没有dex文件,而是smali文件
我们再smali中找到程序未注册的字符位置,中文在smali中是以unicode编码的形式存储
将其修改,hijacking test
重新打包,此处-f参数为项目文件夹, -o 为生成的apk名称
apktool b -f app -o test.apk 或 java -jar apktool.jar -f app -o test.apk此时还不够,需要进行签名
java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test-final.apk生成我们最终的test-final.apk
但是在安装时,会出现与已安装的应用签名不同,但这并不是说明程序进行了签名校验,只是安卓系统进行了版本更新的对比
将之前的程序删掉
再次安装成功
打开也成功修改了指定文本
防御方式使用Native层代码验证代码的完整性,或者加壳
签名完整性测试检测app是否是原本,还是被第三方重新打包的
测试流程 jarsigner -verify [apk路径]显示未签名说明被第三方篡改重新打包了,显示已验证为完整的
检测证书情况
jarsigner -verify -verbose -certs [apk路径] 可导出组件测试 测试流程该漏洞是因为该app组件未进行严格权限控制,导致任意app均可调用该组件导致危害
需要的工具为dorzer