Googlectf 2017 food writeup

google ctf 2017出了道安卓题,就一道,唉,拿了个三血。。。不难,从头到尾仔细分析了一遍。

转载请联系本人,否则作侵权处理。

相关文件链接:https://github.com/LeadroyaL/attachment_repo/tree/master/googlectf-food/

在Java层渲染GUI渲染到一半就跑到JNI里了,

我所有的手机全部都无法运行,崩在了so里面,也不知道是什么骚套路,只能静态分析,不能偷鸡了。


下面是JNI,每个const-string均被加密处理过,需要手动解掉它们,例如

解出来是

使用的脚本为

之后一行一行看代码,总体流程为:

  1. 解密一段数据后,创建并且写文件,是0x1770006大小的、在so中存放的明文,以dex035开头;
  2. 拿到systemClassLoader,加载创建好的d.dex文件,新建一个classloader;
  3. 删掉dex和odex的文件和目录
  4. 加载com/google/ctf/food/S这个类,调用其构造方法,参数用反射的方式拿到老的Activity
  5. 0x1098进行热补丁,通过读取/proc/self/maps,对内存中,距离dex035为0x720的位置,写为unk_2E88 xor 0x90,最后写到原来的位置。我们观察一下dex文件,刚好写掉了一个空的方法体,位于com/google/ctf/food/Broadcast的cc方法。
  6. 之后继续渲染即可。

全部修好的dex可以拖到JEB去查看(详见附件),显然是个RC4

用python解一下

flag为

搞定。。。

《Googlectf 2017 food writeup》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

code