版权归作者所有,如有转发,请注明文章出处: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

或者使用 htop 查看线程信息
htop -p $(pidof com.shizhuang.duapp)

通过 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

最低0.47元/天 解锁文章
6978

被折叠的 条评论
为什么被折叠?



