type
status
date
slug
summary
tags
category
icon
password
这个题还是比较有意思的,而且对于frida的使用也得到了很大的提升
先来看一下java层有什么东西
java层分析:

这个就是加载一个文件,就是我们可以在assert里面看到的那个zundu.dex,当然这里我们可以直接进行dump,因为原来的是加密的,当时我没有从这里dump,我没怎么注意java层的东西,都是从so层一点点hook参数得到的,这里的dump更加简单,先给一下脚本吧
dump_zundu.dex
得到加载路径:
/data/user/0/com.nobody.zunjia/cache/dex/zunjia.dex
可以得到这个dex文件
主函数分析:
接下来我们hook一下这个大的callDexMethod函数,因为我们看到啦他有一个输入input
hook一下看一下
得到啦下面的东西:

结合我们dump下来的那个dex文件,

zundu.dex分析:
不就是换表的base64吗,我们手动加密一下看看

一模一样,就是这样
SO层分析:
这个肯定就在so里面了
我们看一下那个check函数,简单恢复了一下符号,以及重新命名了一些函数,我当时做的时候没有恢复,全都是hook猜的

接下来看一下v14的值是什么
代码如下:
得到下面的:

和我们hookjava层得到的一模一样,
RC4:


可以看出来就是base64加密的结果作为RC4加密的key
enc就是我们上面的unk_3958
所以接下来就可以进行爆破了,因为前面我们知道他不可能是很长
爆破:
代码如下:
下面是我在做的时候的思路
思考:
我当时做的时候根本没有hook java层的东西,上来就直接对着so分析了,可真后悔,浪费了这么多时间
因为我知道他肯定会加载zundu.dex,所以我直接hook open函数,发现确实有dex的痕迹
接下来又对另外一个zunjia.so进行分析,hook发现了一个加载的地方,但是他是分段加载,我于是分段dump,这个可以学习一下,脚本如下:
注释的地方是我当时的分析,hook看到的数据,剩下的hook就是因为没有恢复符号导致的,其实hook了很多地方,就不一一展开了,hook这些代码得到了一些流程
总结就是还得练哈哈哈,不能再小看java层了,最近再在看so层导致打ctf也只注重so了,还好他也用so记载了dex,要不然还不一定可以做出来
- Author:xiaowaaa
- URL:https://www.xiaowaaa.asia//article/1965df8d-8884-80e7-934f-c78bf012a410
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!