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

java层分析:

notion image
 
这个就是加载一个文件,就是我们可以在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一下看一下
得到啦下面的东西:
notion image
 
结合我们dump下来的那个dex文件,
notion image

zundu.dex分析:

不就是换表的base64吗,我们手动加密一下看看
notion image
一模一样,就是这样

SO层分析:

这个肯定就在so里面了
我们看一下那个check函数,简单恢复了一下符号,以及重新命名了一些函数,我当时做的时候没有恢复,全都是hook猜的
notion image
接下来看一下v14的值是什么
代码如下:
得到下面的:
notion image
 
和我们hookjava层得到的一模一样,
 

RC4:

 
notion image
notion image
可以看出来就是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,要不然还不一定可以做出来
算法练习Day01360加固—脱壳学习
Loading...