CTF004

xiaoeryu Lv5

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()
  1. 调用之后会去执行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 进行许可。
评论