准备工具:Androidkiller,jadx-gui,IDA
实验目的:通过阿里安全挑战题,熟悉IDA动态调试的操作和原理
(1)我们打开案例APK,如图所示
- 很显然,我们看到这样的破解登入密码,则可以考虑动态调试:AS动态调试或IDA动态调试。
(2)我们考虑采取何种动态调试方式,主要是看需要分析的代码是否在native层,如果不在,我们则采用比较简便的AS进行调试,否则就只能用IDA调试了
- 1)首先,我们将apk导入AndroidKiller进行分析,并快速找到程序的入口点
- 2)我们分析MainActivity源码,分析代码逻辑,直接用JEB
- 我们不难找到验证密码的函数就是securityCheck,并且在native层,则我们需要考虑用IDA动态调试了
(3)IDA动态普通调试(一般我们在使用IDA动态调试的时候,往往是IDA动态调试,静态分析双IDA同时进行)
- 我们将so文件导入IDA中进行分析,并直接找到securityCheck方法
- 双击进入,并按tab查看对应的c源码
- 我们分析代码逻辑,不难发现验证逻辑代码处,我们怀疑密码就是v6地址存放的值,双击进去查看
- 我们找到一串字符串,发现好像为验证的密码,是否我们这里已经完成破解,我们尝试输入密码
- 这里我们发现密码不正确,说明官方肯定是对这里进行了处理,所以静态分析肯定不能解决问题,接下来我们尝试动态调试
- 2)IDA普通动态调试
- 3)IDA挂起动态调试(绕开反调试策略)
(2)问题解决
- 可以把 BLX R7 这条指令给nop掉,也就是把这条指令变成空指令(相当于删除这条指令)这样apk就不会新建线程去执行检测代码了。
案例:
链接:https://pan.baidu.com/s/10YWUj7BDcZ-3sY0oOqczHw
提取码:cxh4
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://cloud.tencent.com/developer/article/1906747