Frida 调用 kill 命令挂起&恢复 Android 线程

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/

Android 线程相关命令

获取 PID

adb shell pidof com.shizhuang.duapp

查看线程信息

方法一:进入 /proc//task

进入 adb shell 执行下面命令

cd /proc/$(pidof com.shizhuang.duapp)/task
ls

这个目录中每一个子目录的名字就是该 App 的一个线程的 TID(Thread ID)。

你还可以进一步查看每个线程的状态:

cat /proc/$(pidof com.shizhuang.duapp)/task/<tid>/status

例如:

cat /proc/$(pidof com.shizhuang.duapp)/task/22432/status

方法二:使用 top 或 htop 查看线程

使用 top 查看线程信息

top -H -p $(pidof com.shizhuang.duapp)
  • -H 表示以线程方式查看

  • -p 指定 PID

word/media/image1.png

或者使用 htop 查看线程信息

htop -p $(pidof com.shizhuang.duapp)

word/media/image2.png

通过 kill 命令 停止 / 挂起 / 恢复线程

kill 是 Linux 系统中用来向进程发送信号的命令,最常用于终止进程。虽然它名字叫 “kill”,但它可以发送多种信号,不只是“终止”。

进入 adb shell,比如线程/进程 id 为 22432

# 停止指定进程/线程 
kill 22432

# 强制停止进程/线程
kill -9 22432

# 强制停止 com.cyrus.example
kill -9 $(pidof com.cyrus.example)

# 挂起进程/线程
kill -19 22432

# 继续进程/线程
kill -18 22432

kill 命令详细介绍:https://man7.org/linux/man-pages/man1/kill.1.html

常见信号类型(默认是 SIGTERM):

信号名 数值 含义
SIGHUP 1 挂起信号,通常用于重启进程配置
SIGINT 2 中断信号,类似 Ctrl+C
SIGQUIT 3 退出信号,类似 Ctrl+\
SIGKILL 9 强制终止信号(无法捕获)
SIGTERM 15 终止信号(可捕获、默认)
SIGSTOP 19 暂停进程(无法捕获)
SIGCONT 18 恢复被暂停的进程

使用 Frida 调用 kill 命令

kill 在 C 语言中是定义在 <signal.h> 中的一个标准函数,它本质上是一个系统调用的封装函数。

kill 函数(C 标准库中的定义)

#include <signal.h>

int kill(pid_t pid, int sig);
  • pid:要发送信号的进程 ID。

  • sig:要发送的信号编号,比如 SIGKILL, SIGTERM, SIGSTOP 等。

  • 返回值:返回 0 表示成功。返回 -1 表示失败,并设置 errno。

在底层,kill() 实际上会触发系统调用(比如 Linux 的 syscall kill),让内核发送信号给指定的进程。

它是 UNIX/Linux 系统里最常用的进程间通信(IPC)手段之一。

1. JS + NativeFunction 调用 libc 中的 kill

查找 libc 中的 kill 函数,并使用 NativeFunction

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值