app静态分析

本文介绍了移动应用的安全测试方法,包括反编译检查代码混淆和SO库保护,安装包签名验证,完整性检验,组件导出安全以及敏感信息泄露和配置不当的检测。同时,提供了相关工具和修复建议,强调了防止应用被逆向分析和保护用户数据的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反编译

测试客户端安装程序,判断是否能反编译为源代码,java 代码和 so 文件是否存在代码混淆等保护措施。未作保护的 java 代码,可以轻易分析其运行逻辑,并针对代码中的缺陷对客户端或服务器端进行攻击。

工具:

Android Killer 
下载地址:https://www.jianshu.com/p/61a93a6c0c1b

jadx	
下载地址:https://github.com/skylot/jadx

jadx是图形化工具直接打开apk文件即可
在这里插入图片描述经过混淆保护的代码,其最明显的特征是大部分类和变量名都被替换为简单的 abcd 字母。

客户端程序可以把关键代码以 JNI 方式放在 so 库里。so 库中是经过编译的 arm 汇编代码,可以对其进行加壳保护,以防止逆向分析。参考 5.1apk 解包,打开 apk 文件。如果客户端程序使用了 JNI 技术,在“lib\armeabi\”文件夹下会有相应的 so 库文件,如图所示:
在这里插入图片描述

安装包签名

使用JDK中/jre/bin目录中的jarsignerkeytool

jarsigner
如图,当输出结果为“jar 已验证”时,表示签名正常。

jarsigner.exe -verify -verbose .\test.apk

在这里插入图片描述
keytool

有apk的情况,查看证书信息,将apk文件复制一份,然后重命名为zip,将zip文件解压,拿到\META-INF\CERT.RSA文件

keytool -printcert -file CERT.RSA

有keystore的情况,查看证书信息

keytool -list -v -keystore xxx.keystore

在这里插入图片描述
自己给apk签名

keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore 
# 说明:-genkey 产生密钥
# -alias demo.keystore 别名 demo.keystore
# -keyalg RSA 使用RSA算法对签名加密
# -validity 40000 有效期限4000天
# -keystore demo.keystore
jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
# 说明:-verbose 输出签名的详细信息
# -keystore demo.keystore 密钥库位置
# -signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.

完整性检验

测试方法:

反汇编Apk(参考反编译保护测试项)
修改资源或代码文件
重打包签名安装(正常运行则说明有问题)

修复方法

代码中对代码文件(classes.dex)做完整性校验
代码中对Apk包做完整性校验
代码中对签名文件(META-INF/MANIFEST.MF)中classes.dex哈希值的校验

组件导出安全

什么是组件导出安全

别的app也可以访问该app

危害

因为权限声明是以组件为单位的,A组件调用B组件的功能来访问操作系统API时,适用于B组件的权限声明。
如果B作为导出组件,没有进行严格的访问控制,那么A就可以通过调用B来访问原本没有声明权限的功能,构成本地权限提升。

客户端APP安全_组件导出

敏感信息泄露

查看应用程序所在目录(需root权限)

—般为:/data/data/{APP包名)/如遇.db文件,多为SQLite数据库。

用logcat查看app日志

发布app前,应该去掉日志

# 实时查看
logcat

# 一次性输出
logcat -d

# 清空日志
logcat -c

# 输出到文件
adb shell logcat -d > xxx.txt

配置不当

AllowBackup属性为true
Debuggable属性为true

在线网站

摸瓜:https://mogua.co
自动分析app
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值