梆梆企业版代码分析记录 之 反调试和资源一致性校验
本帖最后由 skyun1314 于 2018-1-29 15:22 编辑0x00 序1
随着移动安全越来越火,各种调试工具也都层出不穷,最近脱360壳的人满天飞,我今天来调一下棒棒企业版。
0x00 序2
现在脱壳动态调试,静态分析,基本上都是只使用ida,但很少有人结合ida_python动态调试,使用ida_python能很大的提高工作效率,就比如脱壳需要过反调试,或者寻找dump点,所以不是打开一次ida,附加一次进程就能脱下壳的,所以笔者决定结合ida_python将调试中使用到的小技巧总结归纳一下。
0x01过反调试
想要脱壳第一步就需要过反调试,众所周知,反调试有好多种,最基本的一个是读取proc文件状态,所以肯定会调用fopen,所以使用ida_python下一个断点 AddBpt(LocByName('fopen'));一路f9走到这里
然后到lr的地方
f5
跟进来好多函数和变量都看不懂什么意思,分析之后使用ida_python重命名,就好分析了
使用之后是不是豁然开朗
这个函数是检测了这些东西然后判断到正在调试调试,返回1
那我们直接把这个返回值改成0
走出这个函数来到这里
这两个函数都是调试检测如果检测到调试会走到下面的异常函数
程序就会挂掉
同样修改返回值即可。
0x02 资源完整性代码分析
过掉反调试,断点断在 pthread_create 一路f9
确定lr是libDexHelper.so,然后在r2和lr的地址都下断点,继续f9
走到lr以后把主线程暂停
图片描述
继续f9就可以到资源完整性检测的线程
这个函数会传入一个apk的安装路径。
然后她会分布操作
1读取assets/meta-data/manifest.mf内容
2 读取 META-INF/MANIFEST.MF 文件内容
3 这个函数就是拿本地预存的值和读取apk签名文件里面的hash比较
4进入函数分析代码:它先通过META-INF/MANIFEST.MF把文件名和hash 存到一个链表
5 他把manifest.mf这个文件 读成下面的结构。存到数组
i4
Kg==
RYeUYd+yP3JShXAmdbN3b8xD1WE=
opzvAD5X42gY13rlJ8HQWfchSj4=
yeA+pIPECBn2xj16EBDWyU9mjwA=
DoiscxMD7gK0Al1/5z93eaQ4N7A=
C+KBdBCnBWNM4LIAYy9d7sJhBek=
6读取这个文件里面记录的每个文件的sha1的前4个字节拼接做一次base64再做一次sha1
然后和manifest.mf 里面的最后一组比较
到此为止梆梆企业版的反调试,和文件完整性校验已经分析完毕。
其实ida_python 还能做好多事情,比如把一段代码设置成函数,加注释,设置条件断点,打印数据,我这里就不一一列举了。
后续有时间在用ida_pyton去分析加壳代码去脱壳。。。。 占楼 占楼
页:
[1]