鱼C论坛

 找回密码
 立即注册
查看: 4457|回复: 2

梆梆企业版代码分析记录 之 反调试和资源一致性校验

[复制链接]
发表于 2018-1-29 15:22:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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走到这里
1.png
2.png
3.png
然后到lr的地方
4.png
f5
5.png
跟进来好多函数和变量都看不懂什么意思,分析之后使用ida_python重命名,就好分析了
6.png
使用之后是不是豁然开朗
7.png
8.png
这个函数是检测了这些东西然后判断到正在调试调试,返回1

那我们直接把这个返回值改成0
9.png
10.png
走出这个函数来到这里
1.png
这两个函数都是调试检测如果检测到调试会走到下面的异常函数
2.png
程序就会挂掉
同样修改返回值即可。

0x02 资源完整性代码分析
过掉反调试,断点断在 pthread_create 一路f9
3.png
确定lr是libDexHelper.so,然后在r2和lr的地址都下断点,继续f9
4.png
走到lr以后把主线程暂停
图片描述
继续f9就可以到资源完整性检测的线程
5.png
这个函数会传入一个apk的安装路径。
然后她会分布操作
1读取assets/meta-data/manifest.mf内容
6.png


2 读取 META-INF/MANIFEST.MF 文件内容
7.png
3 这个函数就是拿本地预存的值和读取apk签名文件里面的hash比较
8.png
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
9.png
然后和manifest.mf 里面的最后一组比较
10.png


到此为止梆梆企业版的反调试,和文件完整性校验已经分析完毕。
其实ida_python 还能做好多事情,比如把一段代码设置成函数,加注释,设置条件断点,打印数据,我这里就不一一列举了。
后续有时间在用ida_pyton去分析加壳代码去脱壳。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-31 09:17:24 | 显示全部楼层
占楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-22 19:08:11 | 显示全部楼层
占楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 14:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表