bpf_probe_write_user补丁添加对只读内存的修改

因为bpf_probe_write_user 只能对可写的用户内存页面进行修改,而对只读内存则无法进行修改,例如rodata以及text 段的内容。本文对bpf_probe_write_user 打补丁,以支持此功能,以应对日益强大的对抗

eBPF实践之修改bpf_probe_write_user以对抗某加固Frida检测

本文需要密码,无偿阅读请微信LLeavesG联系作者获取。BPF 的 bpf_probe_write_user 功能十分强大,它可以修改用户空间的内存,可以用于进程隐藏或者绕过环境检测等操作,本文为bpf_probe_write_user 添加修改只读内存的功能,以对抗360加固企业版Frida检测。

Android eBPF Syscall包装器问题小记

在使用BCC与python结合对Android的openat syscall进行追踪时发现一个很有趣的问题,在此记录 首先是BCC文档中给出如何trace syscall 的教程,这里提到必须要syscall__为前缀,很好奇为什么必须要这个前缀,于是开始进行测试。

ByteDance-AppShark静态分析工具

在前期对App进行漏洞挖掘的过程中发现,以纯人工的方式去逆向某些App并且发现其中的漏洞已经不太现实,主要有以下几点原因: • Android系统体系十分庞大,App代码量巨大,存在超大型App(抖音目前已经有150万个函数),人工分析极度不现实 • 对Android静态分析精力耗费巨大,自动化静态分析完全可以简化大量重复的工作。 Appshark 是一个针对安卓的静态分析工具,它的设计目标是针对超大型App的分析(抖音目前已经有150万个函数). Appshark支持众多特性: • 基于json的自定义扫描规则,发现自己关心的安全漏洞以及隐私合规问题 • 灵活配置,可以在准确率以及扫描时间空间之间寻求平衡 • 支持自定义扩展规则,根据自己的业务需要,进行定制分析

Android环境下Seccomp对系统调用的监控

一切都因WMCTF2023一道Android 游戏题BabyAnti-2而起,预期解为拦截**mincore**调用(**int mincore(void *start, size_t length, unsigned char *vec);**监测指定大小的页面是否处于物理内存中。一般用于内存扫描的检查,一旦扫描行为发生,有些并不在物理内存的页面被调入。vec 是一个字节数组,用于存储结果。每个字节对应 addr 和 length 指定的内存区域中的一个页面。如果相应的页面驻留在内存中,那么相应的字节的最低位会被设置为 1,否则会被设置为 0。),当时非预期了题目,即直接CheatEngine附加游戏题,扫描内存时游戏虽然会监测到并弹窗,但是游戏正常运行,直接能修改分数并且拿到flag。 由于题目中mincore 不止存在直接libc调用,而且存在svc指令的调用,这种svc指令相当于是直接的系统调用,不能被一般的钩子挂住,从而无法监视和修改调用参数返回值。而且题目设计使用申请的内存空间修改为可执行后放置svc指令,一直循环监测。除此之外,题目还是flutter写的,逆向逻辑难上加难。经过大量逆向和调试工作后,利用frida的内存搜索功能匹配svc指令,最终能够拦截并且不被检测到,但是鉴于太复杂,想着有没有什么通用办法,不需要逆程序逻辑就直接拦截svc调用的方法。 于是有了这篇文章,文章总结了各位大佬提出的三种方案(ptrace-seccomp,frida-seccomp以及sigaction-seccomp)并进行了测试。

野火IM-APP端聊天数据库分析

尝试分析野火IM聊天APP的聊天记录数据库过程中遇到了很多问题,因此仅作记录。

CVE-2020-0338漏洞分析

没想到除了Bundle风水还有这样一种优雅的利用方法,叹为观止

Android-Flutter逆向

因为WMCTF2023的一道用Flutter写的Android游戏题而引出这篇文章,刚好一直想研究一下Flutter,这次趁这个机会研究一下,并且介绍一种基于Patch Flutter动态链接库实现辅助解析Flutter逆向工程符号的方法。这个方法理论上支持任意Flutter版本,而且具有高度定制化的特点,缺点是需要根据特定的版本重新编译,并且需要替换动态链接库,存在被检测到的可能。

CVE-2021-0928漏洞分析

该漏洞在Android 12 Developer Preview 3版本是上被发现,并在Android 12 release中就已经完成了修复。本文进行简单分析