Skip to content

stackplz_v3.0.0

Choose a tag to compare

@SeeFlowerX SeeFlowerX released this 29 Jan 15:51
· 58 commits to dev since this release

使用此版本必须执行一次./stackplz --prepare


新版本带来了许多新东西:

  1. 加入了-c/--config选项,即配置文件,请参考tests目录下的内容
  2. 硬件断点功能提供了rpc模式,与frida联动请参考frida_hw_brk.js,这样可以免去手动操作的繁琐;注:内核开启CONFIG_HAVE_HW_BREAKPOINT即可使用硬件断点,不一定需要5.10+内核
  3. --json选项加入了更多数据的解析,目前还不完整
  4. 加入了--showpc选项,打印堆栈的时候会显示完整pc值
  5. 对split apk的库加入了uprobe hook支持,不过堆栈显示还是会显示为apk的偏移,也许可以改进
  6. 支持了std字符串读取
  7. 支持了数字数组,数字指针的读取
  8. 修复了某些云手机上数据读取异常的情况
  9. 支持按c回车自动恢复进程运行,搭配--kill SIGSTOP使用
  10. 加入了--auto选项,搭配--kill SIGSTOP使用,可以减少堆栈回溯不到的情况
  11. 加入了--dump/--parse选项,可以大幅度减少数据丢失,目前还没完成
  12. 过滤支持了eq,即相等比较,还有lt/gt,但是不知道为什么有bug,后面排查
  13. 修正了一些flags解析问题
  14. 重新支持了arm架构的syscall追踪,字符串参数问题不大,但有一些结构体解析存在问题,请等待更新
  15. --reg 选择支持多寄存器偏移获取,用逗号分隔即可
  16. 还有其他各种变更,不过用法上基本变化不大

注:目前若要尝鲜追踪arm syscall,请使用--arch aarch32指定架构,并搭配测试配置文件使用

image


距上一个稳定版本v2.1.4过去了三个月了,后面陆续做了一些小修小补

eBPF程序在内核的虚拟机中运行时有各种严格的检查,还有循环限制(虽然有bpf_loop,但是5.10用不上),当时感觉就这样了

直到有一天反应过来可以用vm的思路,即维护一个操作列表,到时候在虚拟机中执行这个操作列表就行了(在有限的循环中vm)

这样的好处是可以自由定制各种操作了,一些循环操作,复杂数据读取一并得到了解决,最终实现了配置化获取数据

本版本测试不完整,有问题请issue反馈

stackplz v3.0.0 与你相见