stackplz_v3.0.0
使用此版本必须执行一次./stackplz --prepare
新版本带来了许多新东西:
- 加入了
-c/--config选项,即配置文件,请参考tests目录下的内容 - 硬件断点功能提供了rpc模式,与frida联动请参考frida_hw_brk.js,这样可以免去手动操作的繁琐;注:内核开启CONFIG_HAVE_HW_BREAKPOINT即可使用硬件断点,不一定需要5.10+内核
--json选项加入了更多数据的解析,目前还不完整- 加入了
--showpc选项,打印堆栈的时候会显示完整pc值 - 对split apk的库加入了uprobe hook支持,不过堆栈显示还是会显示为apk的偏移,也许可以改进
- 支持了std字符串读取
- 支持了数字数组,数字指针的读取
- 修复了某些云手机上数据读取异常的情况
- 支持按c回车自动恢复进程运行,搭配
--kill SIGSTOP使用 - 加入了
--auto选项,搭配--kill SIGSTOP使用,可以减少堆栈回溯不到的情况 - 加入了
--dump/--parse选项,可以大幅度减少数据丢失,目前还没完成 - 过滤支持了
eq,即相等比较,还有lt/gt,但是不知道为什么有bug,后面排查 - 修正了一些flags解析问题
- 重新支持了arm架构的syscall追踪,字符串参数问题不大,但有一些结构体解析存在问题,请等待更新
--reg选择支持多寄存器偏移获取,用逗号分隔即可- 还有其他各种变更,不过用法上基本变化不大
注:目前若要尝鲜追踪arm syscall,请使用--arch aarch32指定架构,并搭配测试配置文件使用
距上一个稳定版本v2.1.4过去了三个月了,后面陆续做了一些小修小补
eBPF程序在内核的虚拟机中运行时有各种严格的检查,还有循环限制(虽然有bpf_loop,但是5.10用不上),当时感觉就这样了
直到有一天反应过来可以用vm的思路,即维护一个操作列表,到时候在虚拟机中执行这个操作列表就行了(在有限的循环中vm)
这样的好处是可以自由定制各种操作了,一些循环操作,复杂数据读取一并得到了解决,最终实现了配置化获取数据
本版本测试不完整,有问题请issue反馈
