CTF004
1. 脱壳
用jadx打开之后发现有加壳那先脱壳再分析
看名字是一个_qihoo_的壳,这个呢我们使用反射大师去脱壳,反射大师需要运行在安卓7.1以下的系统上
在root过的手机上安装一个_VMOS Pro_模拟一个安卓7.1的系统
安装上反射大师和CTF004,注意:反射大师需要重启才能启用
然后打开反射大师,选择我们的CTF004并打开
然后点击这个芒星点击 当前ACTIVITY
然后点击写出DEX->修复Magic->确定
之后去提示的路径处将文件拷贝到物理机,再使用_adb pull_命令拉取下来对脱壳后的文件开始分析。
2. 开始分析
分析代码逻辑
进来_MainActivity_之后发现_onCreate_函数都在native层去实现了,那再看看其它的类
点进Flag类
进来之后发现这里面有些需要我们注意的点:
1. 有两个key
2. 有计算这两个key的地方,且在MyService类中进行了对比如果符合条件会去调用calcFlagFirstStep()
- 调用之后会去执行comm()方法对接收到的字符串进行一系列操作
hook获取Flag
接下来我们写脚本来hook以下这两个计算函数看返回值是什么就可以直接拿到Flag了
setImmediate(function(){
Java.perform(function(){
// 因为这个hook不需要实例化所以直接使用Java.use就可以
var Flag = Java.use("ctf.crack.vulcrack.Flag")
var ret1 = Flag.calcFlagFirstStep();
console.log("ret1= "+ret1);
var ret2 = Flag.calcFlagSecondStep();
console.log("ret2= "+ret2);
})
})
执行hook脚本
这里可以看到两个返回值加起来就是完整的Flag。
over~
- 标题: CTF004
- 作者: xiaoeryu
- 创建于 : 2023-07-09 01:15:41
- 更新于 : 2023-07-09 01:59:31
- 链接: https://github.com/xiaoeryu/2023/07/09/CTF004/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论