Skip to content

Releases: SeeFlowerX/stackplz

stackplz_v2.0.0_beta7

21 Jul 01:52

Choose a tag to compare

stackplz_v2.0.0_beta7 Pre-release
Pre-release
  • 加入了read/write等调用的数据获取,目前最大4096字节

都说momo检测很强,我们来学习一下,毕竟在内核的观测下,它的一举一动都将被记录下来。

在开启和关闭Zygisk-LSPosed的情况下,分别记录所有的syscall调用,看看有什么不同吧~

image

在Zygisk-LSPosed开启后,momo会提示Zygote被注入,看来可能和图上有关系呢

测试条件:

  • momo v4.4.1
  • Zygisk-LSPosed v1.8.6
  • Magisk v26.1
./stackplz --name io.github.vvb2060.mahoshojo --syscall all -o momo.log

momo_lsp_logs.zip

其他:

  • 常规的uprobe的hook已经恢复,参数读取这几天就会完成
./stackplz --name io.github.vvb2060.mahoshojo --symbol strstr --stack -o strstr.log

stackplz_v2.0.0_beta6

19 Jul 16:18

Choose a tag to compare

stackplz_v2.0.0_beta6 Pre-release
Pre-release
  • 全部arm64 syscall都支持了追踪,不过部分参数的详细输出还需要慢慢增加
  • 支持记录write/read/writev/readv的数据,最大长度为256字节
  • 修复某些非法地址引起的异常
  • 详细输出sockaddr的信息,ip端口一目了然了

image

image
image

stackplz_v2.0.0_beta5

18 Jul 16:08

Choose a tag to compare

stackplz_v2.0.0_beta5 Pre-release
Pre-release
  • 支持了更多syscall
  • 支持了pid/tid黑名单
  • 其他改进

stackplz_v2.0.0_beta4

18 Jul 10:00

Choose a tag to compare

stackplz_v2.0.0_beta4 Pre-release
Pre-release

添加了更多syscall,并且修复了获取stat数据失败的情况

stackplz_v2.0.0_beta1

14 Mar 02:23

Choose a tag to compare

stackplz_v2.0.0_beta1 Pre-release
Pre-release

image


已经初步合并了estrace的特性,并进行了大量整合,当然还有相当多细节没有完善,但是希望大家能及时体验到新版的能力,先发布pre-release版本

注意: 仅支持5.10+的内核,目前syscall部分对于arm32的支持还没有做。

整合之后的新版本,不再通过stack或者syscall这样的子命令来区分,改为--stack--syscall来区分了

另外追踪syscall是指定函数名,而不是之前的系统调用号了,另外要追踪全部syscall,那么使用这样的命令:--syscall all

重点: 新版中添加了一个-b/--buffer选项,用于指定ebpf的环形缓冲区大小,增大该设定的数值可以有效避免buffer full,也就是数据丢失的问题

如果出现了下面的问题,可以多试几次,以及先结束调不必要的进程

failed to create perf ring for CPU 0: can't mmap: cannot allocate memory

其他: 引入了新的so基址获取方案,安卓13暂不支持,后续将进行适配


参考命令:

./stackplz -n com.starbucks.cn --syscall openat --getpc -o tmp.log
./stackplz -n com.starbucks.cn --stack --symbol open -o tmp.log
./stackplz --name com.sfx.ebpf --library libnative-lib.so --symbol _Z5func1v --stack
./stackplz -n com.starbucks.cn -b 120 --syscall all -o tmp.log

stackplz_v2.0.0_beta3

17 Jul 16:25
850e858

Choose a tag to compare

stackplz_v2.0.0_beta3 Pre-release
Pre-release
  • 加入了更多syscall支持
  • 修复某些情况下字符串获取失败
  • 支持all标识追踪已经支持的所有syscall
  • 过滤逻辑优化

stackplz_v2.0.0_beta2

17 Jul 07:53
850e858

Choose a tag to compare

stackplz_v2.0.0_beta2 Pre-release
Pre-release

image

stackplz近期做了很大的改动,加入了更多的特性和优化,目前仅支持Android arm64 syscall追踪

相关特性如下:

  1. 更快且高效的数据传递,参考了tracee
  2. 更细致的结构体信息输出,参考了eStrace
  3. 支持在ReDroid一类的容器中使用
  4. 支持对单个进程追踪
  5. 支持对root/shell进程追踪(还未完善)

命令示意(在/data/local/tmp下执行):

./stackplz --name com.starbucks.cn --syscall execve -o tmp.log --debug
./stackplz --uid 2000 --syscall getcwd -o tmp.log --debug

说明:

  1. 目前仅适配了部分高频syscall
  2. 仅支持arm64
  3. 多个syscall用逗号隔开

QRCODE

stackplz_v1.9.0

22 Dec 07:01

Choose a tag to compare

syscall也支持了--no-tids,两个选项的整合还要咕一下

2022/12/22 17:40 update:

打印单个寄存器信息时不打印完成寄存器信息,除非指定了--regs

这样使用下面的命令可以直观看到一些反调试函数

./stackplz --name com.p1.mobile.putong stack --symbol pthread_create --reg x2 -o tmp.log

image

stackplz_v1.8.0

01 Dec 15:53

Choose a tag to compare

添加--no-tids选项,支持过滤掉特定的线程;比如hook recv总是有几个线程一直在接收...这个时候(黑名单)过滤掉就好了

后续对pid也添加黑白名单功能

stackplz_v1.7.0

28 Nov 16:24

Choose a tag to compare

支持通过--reg指定寄存器,对跳转目标地址进行偏移计算,再也不担心找不到跳哪儿去了

--reg选项需要搭配--regs或者--unwindstack使用,后续进行简化和批量支持

比如在libtiny.so + 0x175248有一个跳转,通过汇编可以知道跳转地址来自x8

image

那么命令如下:

./stackplz --name com.xingin.xhs stack --library libtiny.so --offset 0x175248 --regs --reg x8

然后可以得到输出的x8信息,0xdb148正好是前面回溯的堆栈的0xdb1a0的函数起始地址

image