在之前的实践中我都是通过process_vm_readv的系统调用进行跨进程内存读的,可以说基本上也是没有遇到过太大的阻碍。而虽然不太常见,实用性也有待商榷,但似乎确实有一种蜜罐的检测思路
mincore 系统调用用于确定调用进程的虚拟内存页面是否驻留在内存中,其用法如下
p为需要检测的虚拟内存,然后是n个系统页的size,接着就会返回对n个vec写入状态
这里的vec虽然是一个字节,但目...
test
前言这个项目很久之前写了,支持对x64的linux程序进行断点写hook脚本,trace等操作,曾经有那么一段时间,成为了我在CTF下带杀器。但非常可惜的是,AI时代到来,已经基本上没有用了,唉,时代的眼泪
那么我当时为什么要弄这个东西呢,这就说说我当时的一个需求了
比如说一个rc4加密,我想要直接拿到xor_stream,在0x158e偏移处,分别读取al和byte [rbp -...
test
App启动流程总所周知呢,我们在使用frida hook的时候,要么是通过attach,要么是通过spawn模式启动
attach好理解,通过pid去ptrace attach,然后注入so就好了,但问题就在这个spawn模式
他到底是如何通过这样一条指令,去完整启动app的工作的呢
1frida -U -f "com.test.example" -l hook...
test
环境搭建clang: eBPF 必须用 Clang 编译(它支持生成 BPF 字节码)。
libbpf-dev: 现代 eBPF 的核心库。
linux-tools: 包含 bpftool,用于生成内核头文件。
12sudo apt updatesudo apt install -y clang llvm libbpf-dev make gcc linux-tools-$(unam...
什么是ebpf
eBPF(extended Berkeley Packet Filter)是Linux内核3.18引入的革命性技术,它允许在内核空间运行用户定义的沙盒程序,无需修改内核代码或加载内核模块。传统的内核观测手段(如SystemTap、kprobe)需要编译内核模块,存在系统崩溃风险且灵活性差。eBPF通过JIT编译和验证器机制,在保证安全性的前提下,实现了动态、高性能的内核可编程...
Root检测BL锁检测
系统属性(Properties)检测
这是最简单但也最容易被伪装的层级。
ro.boot.flash.locked: 值为 1 表示锁定,0 表示解锁。
ro.boot.verifiedbootstate:
green: 锁定且签名验证通过。
orange: 已解锁(最常见的检测点)。
yellow: 加载了自定义证书。
red: 验证失败。
ro.secur...
前言结果非常意外,我竟然获得了今年安卓的优秀奖,好听点是腾讯游戏安全竞赛2026安卓赛道决赛第5名!
比较遗憾的就是对反调试反注入这一块没有分析好,再加上很多分析过程都依赖AI,导致最后还是排名偏低,不过也是非常满意了。
对于FLAG生成的部分,网上已经有很多优秀的WP了,包括第一名Matriy师傅的,让我受益匪浅,因此在这里只对我比赛最为困惑的且学习颇多的地方,注入检测进行复盘
多线程检...
从tcpdump开始
我们在研究Frida检测与绕过的时候,一直绕不开的几个点
扫描Frida server的默认端口27042
读/proc/self/task/检测特征线程,比如
1232026-03-04 13:03:09.451 11077-11077 FridaDetect twogoat.checker2 ...
从ArtMethod变化观测众所周知,Frida在native层的hook是通过inline hook实现的,就是在函数开头修改字节码,跳转到自己的trampoline函数,这个不难理解,也并非Frida所独有的。/但Frida真正强大的,在于其Java层函数Hook的功能。
在此次学习中,我选用Android9 ARM64作为测试环境。
接下来写一段最简单的代码,通过对add_t...