记事本

MP4v2视频库漏洞分析

背景介绍 MP4v2是一个读取、创建、编辑MP4媒体文件的开源库。这个开源库在各大Linux发行版仓库中都有提供,也有在Android和iOS上的移植。然而,由于代码较为久远,且似乎已经无人维护,其中存在的安全漏洞较多。最近我们对这个库进行了漏洞挖掘,目前为止已经发现并提交了5个CVE。漏洞的类型也较为典型,例如整数溢出,double free等。在这篇文章中,我们将依次对这些漏洞的成因进...

AFL改进小试

在阅读学习AFL源码的过程中,有一个变异阶段引起了我们的极大兴趣:havoc。AFL的做法,是将一系列变异随机组合到一起,因此这部分是不折不扣的“看天吃饭”。 然而,当我们搞清楚havoc的变异策略后,脑海中闪过的第一个想法就是:能不能减少一些“随机化”,尽量去变异那些“更重要”的字符,从而提高路径覆盖效率?于是,基于这一点,我们对AFL做了一些尝试改进,不过也踩了很多坑。 基本思路 ...

AFL文件变异一览

上一篇文章主要对AFL的一些实现细节进行了分析,但正如文章最后所说,还有很多细节讲到。所以我又另外写了这篇文章,专门介绍AFL是如何对输入文件进行变异的。 总的来讲,AFL维护了一个队列(queue),每次从这个队列中取出一个文件,对其进行大量变异,并检查运行后是否会引起目标崩溃、发现新路径等结果。变异的主要类型如下: bitflip,按位翻转,1变为0,0变为1 arithm...

AFL内部实现细节小记

AFL(American Fuzzy Lop)是一款开源的fuzzing工具。最近我对其代码进行了简要的阅读,大致总结了一些AFL的实现细节,在此记录整理。 代码插桩 使用AFL,首先需要通过afl-gcc/afl-clang等工具来编译目标,在这个过程中会对其进行插桩。 我们以afl-gcc为例。如果阅读文件afl-gcc.c便可以发现,其本质上只是一个gcc的wrapper。我们不...

在Android N上对Java方法做hook遇到的坑

之前编写的Android hook工具YAHFA,在Android N之前的环境上运行基本是没有什么问题的。但是,在Android N之后,同样的代码会造成应用崩溃,并且可以稳定复现。为了解决这一问题,我对Android N引入的新机制进行了一定的研究,并针对性地做了修复。由于网上关于Android N混合编译及方法hook的资料不多,这里简要记录下近期学习的内容和修复YAHFA的思路。 ...

讯飞输入法PC版日志上传解密逆向

入手 驰那边安装讯飞输入法后,他将全部文件打包发送过来。解压后发现有.exe和.dll文件: 所以要检查的目标,就是这些二进制文件。 根据旭抓包的结果,日志请求会访问 /log.aspx?c=1002&v=2.0&t=20170613144351 这样的地址,所以,最基本的就是在全部二进制文件中搜索字符串&t=。搜索确认后,发现在文件BlcCore.dll中...

机器学习在侵权微信公众号识别中的应用

研究背景 最近遇到了收集侵权的微信公众号的需求。根据前期沟通,整理得到了一批搜索关键词以及白名单。 于是,我对之前的公众号信息采集插件进行了调整优化,加快了搜索速度,得到了一批数据: 搜索关键词数量 118 采集字段 微信ID、公众号名称、账号主体、功能描述、是否通过微信认证、logo地址 ...

x86架构下对方法做inline hook的坑

最近在研究Android原生代码hook时,遇到了一个麻烦。具体来说,就是在x86架构下,方法inline hook后,在执行原方法时可能会segfault。这里简要记录下,希望之后能够解决这个问题。 inline hook的基本思路 对方法进行inline hook,基本上就是以下步骤: 将origin方法的起始几条指令,保存到backup 在backup的最后,跳转回or...

YAHFA--ART环境下的Hook框架

在Android Dalvik时代,最流行的Hook框架非Xposed莫属了。各种功能强大的Xposed插件极大地丰富了Android的可玩性,而对于安全研究人员来说,hook则是应用逆向工作中的一项非常有效的手段。 但是,进入到ART时代后,情况逐渐发生了变化。Xposed框架对系统进行了较大的改动,因此其安装适配难度显著提高;另一方面,随着近年来热修复技术的兴起,各大国内厂商也纷纷推出...

VirtualApp沙盒基本原理

VirtualApp是一个开源的Android App虚拟化引擎,允许在其中创建虚拟空间,并在这个虚拟空间中运行其他应用。通过阅读源码及动态调试,基本了解了其运行原理,在此记录。 本质 Android应用隔离是基于Linux系统的多用户机制实现的,即每个应用在安装时被分配了不同的Linux用户uid/gid。而在VirtualApp中,client应用(通过VirtualApp安装的...