| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
sukinject 是一个面向 Linux / Android arm64 的跨进程 hook / 注入框架。 它通过内核模块和 /proc/sukinject transport 对目标进程安装 DBI hook, 公开语义是:
target -> replacement -> origin
调用方进程里的普通 C 函数指针不能直接作为跨进程 replacement。
当前版本是 0.1.2。项目依赖 root 权限和匹配目标内核的模块构建环境, 请只在你拥有授权的设备、进程和环境中使用。
include/ 公开头文件
lib/ sukinject 静态库
tools/ sukctl、sukagentctl 等用户态工具
runtime/dbi/ DBI 重编译核心
runtime/kmod/ 内核模块
runtime/agent/ agent 示例源码
runtime/target/ 示例目标程序
docs/ 使用与 API 文档
静态库:
make -C lib clean all命令行工具:
make -C tools clean all内核模块(需要目标内核的 build 目录):
make -C runtime/kmod KDIR=/path/to/kernel/build加载内核模块后确认 proc 入口:
echo status | sudo tee /proc/sukinject >/dev/null
sudo cat /proc/sukinject解析符号:
sudo tools/sukctl --allow \
-p <pid> \
--module <module-or-exe> \
--symbol <symbol> \
resolve安装 generated wrapper(调用原函数后对整数返回值加 7):
sudo tools/sukctl --allow \
-P /proc/sukinject \
-p <pid> \
--module <module-or-exe> \
--symbol <symbol> \
--origin-add 7 \
dbi-hook查看状态:
sudo tools/sukctl -P /proc/sukinject status卸载 hook(建议先停住目标线程):
sudo tools/sukctl --allow \
-P /proc/sukinject \
--stop \
-p <pid> \
--module <module-or-exe> \
--symbol <symbol> \
dbi-unhooktools/sukctl --abi int-origin-add:7 abi-plan
sudo tools/sukctl --allow -p <pid> -f <func_va> --ret-imm 1234 dbi-hook
sudo tools/sukctl --allow -p <pid> --module exe --symbol compute_value --origin-add 7 dbi-hook
sudo tools/sukctl --allow -p <pid> --module libtarget.so --offset 0x1234 --ret-imm 1 dbi-hook
sudo tools/sukctl --allow --stop -p <pid> -f <func_va> dbi-unhook常见 ABI wrapper:
也可用 --abi-intent / --abi-signature 做签名校验后的计划选择。
接口总览:docs/public-interfaces.md
库用法:docs/library-guide.md · API 参考:docs/api-reference.md
Agent:docs/agent-guide.md · CLI:docs/cli-reference.md
#include <stdint.h>
#include "sukinject.h"
int install_hook(int pid, void *target, void **origin_out)
{
SukInjectOptions options = SukInjectOptionsDefault();
SukInjectInstallResult result;
SukInjectRequest req;
char reason[256];
options.abi = "int-origin-add:7";
req.pid = pid;
req.target = target;
req.replacement = 0;
req.origin = origin_out;
req.options = options;
return SukInjectHook(&req, &result, reason, sizeof(reason));
}SukInjectHook 默认走 /proc/sukinject。自定义 transport 可用 SukInjectHookWithTransport / SukInjectHookPlanWithTransport。
设备端需要:
推荐阅读:
从这里开始: docs/public-interfaces.md
| 文档 | 内容 |
|---|---|
| docs/public-interfaces.md | 公开表面、稳定性、文档地图 |
| docs/library-guide.md | 库用法(libsukinject) |
| docs/library-quickstart.md | 库最小入口 |
| docs/api-reference.md | SukInject* / ABI plan 逐项参考 |
| docs/agent-guide.md | Agent 用法(hook-elf 等) |
| docs/agent-android-quickstart.md | Android 逐步命令 |
| docs/agent-custom-replacement.md | 自定义 agent 策略 |
| docs/agent-samples.md | runtime/agent 样例目录 |
| docs/cli-reference.md | sukctl / sukagentctl 命令参考 |
| docs/proc-interface.md | /proc/sukinject 文本协议 |
| docs/usage.md | 通用构建与 FAQ |
| docs/sukinject-origin-semantics.md | origin 语义 |
| docs/kmod-principle.md | 内核模块原理概要 |
GNU General Public License v2.0,见 LICENSE。
| Back | FazBrowse Home | New Git URL |