记事本

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安装的...

为filebeat+kafka+logstash添加认证与授权

我们之前自己开发的几套工具,目前部署在了外网。为了便于监控运营状况,需要对服务日志进行收集展示。 我们采用了目前非常火的ELK,es和kibana之前已经部署好了,所以需要完成的就是日志收集这一环节。具体地,我们采用filebeat+kafka+logstash,即: 在需要监控的各个节点上运行filebeat。相比logstash,filebeat更为轻量,也更为专一 将fi...

mmap的随机化

pwnable.kr上的题目tiny,我一直没有能够做出来,所以就决定先看看tiny_easy。tiny_easy与tiny很相似,只是栈变成了可执行的,所以可以将shellcode放在栈上。但是,由于栈的地址被随机化了,我们仍然需通过暴力尝试的方法来克服ASLR。 直到最近,我在网上搜索了解到mmap地址随机化的一些坑,才明白这两道题目可以通过某些手段来克服ASLR,从而避免暴力尝试。 ...