Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | A comprehensive plug-in injection toolset |
| Checkout URI | https://github.com/axhlzy/injectutils.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-01-29 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| magic_enum | 0.9.5 |
README
基本思路
- 将dobby,xdl,keystone,capstone,lief 等库看成插件库,实现他们的lua绑定
- 通过注入的方式(ptrace / /proc/mem)的方式进行指定pid的注入
- socket通信实现工具和宿主机的通信[ 这里的宿主机可以是安卓自己或者是windows/linux… ],当前为了测试方便,不跨平台,就在当前命令行交互 ( 其实也想使用到更上层好用的gprc/thrift做调用封装,先记录一下想法,先把大体功能跑起来后续再说怎么改把… )
-
交互目前使用命令行repl命令行补全的方式交互(使用replxx做命令行补全的交互),后续可以考虑客户端的实现(python或者是其他语言编写的交互作为前端)
目标
脱离frida的使用,更加自由的使用
定制化工具化的插件库
当前情况
当前用的是lua绑定,后面也可以考虑使用JavaScript虚拟机,后续可以考虑使用到protobuf之类的协议库方便上层语言的封装调用
- 两个启动方式 [ 注入 / 仅启动(调试测试用) ]
- 绑定库
-
keystone(ks) capstone(cs、dis) - BIND_BREAKPOINT (b)
- linker (somain, wait, disp_soinfo_link, disp_link_map_head, get_soinfo, show_soinfo, show_symtab, find_soinfo)
- process (getpid, getppid, getgid, geteuid, getuid, getpagesize, getcwd, now)
- signal (raise, cont)
- xdl (info, iteratePhdr, addressInfo, xdl_open, xdl_close, xdl_sym, xdl_dsym)
- others(demangleName、findsyms、syms)
- ……
-
- 功能封装
- linker wait (断点下在call_constructors,等待so加载,获取基础soinfo信息)
- …
TODO
- 封装 nativehook 前后端 ( Dobby, frida-gum, xhook, bhook )
-
封装 javahook 前后端( pine, YAHFA ) 、 加入测试性功能Java断点 REF:doc JVMTI REF:frida jvmti.js REF:android jvmti.h
一些其他问题
- 关于libart部分的代码,虽然clone下来了,但是也只是用作新增代码补全的参考,实际上只用到了头文件,并没有把它们编译进去,这里就涉及到一个问题,如何链接到libart原本的函数,原本的思路是直接pull出手机中的libart.so 然后写一个module让它动态链接的,但是发现安卓高版本是不让我们直接访问系统lib的(但是这个好像有办法解决,暂时没空研究),所以换了个思路直接写一个fakelibart编译进源码, 去把我们后续可能用到的函数全部代理出来,使用xdl解析出来转为函数指针封装其调用,让编译器在静态链接的时候能找到就可以了
- 关于rpc想使用双向流,但是又考虑到后续可能会进行函数封装给到客户端的js或者lua虚拟机调用,双向流展示倒是方便了,但是不太适合客户端虚拟机
Lua 绑定使用到 LuaBridge / LuaBridge3 后者更香 文档
备选
JavaScript虚拟机有很多备选
- hermes Facebook 专门为 React Native 框架在移动端(Android 和 iOS)设计的 JS 引擎
- V8 Google Chrome 浏览器使用的 JS 引擎, 支持最新的 ECMAScript 标准特性
- QuickJS 体积极小启动速度非常快
- Duktape 轻量级支持的 ECMAScript 标准相对较旧(主要支持 ES5/ES6 部分特性),性能和功能不如 V8、JSC 或 QuickJS擎, 多了一个inline repl
- jerryscript ECMAScript 标准支持有限,移动端性能也不太行
- mujs
- ChakraCore 来自微软的ERROR: Unsupported target processor: aarch64 (-.-!)
总体还是觉得v8比较舒服(除了编译麻烦点),配合dobby hook函数可以使用到lambda,命令行使用起来更简洁
UnityHook参考项目
- UnityResolve 只是简单测试过安卓平台,单文件实现很简洁很香
- IL2CPP_Resolver 还没测试
- BNM-Android
Inject的参考代码 (自己把自己注入到unity游戏中)
- AndKittyInjector 最完备的实现
- AndroidPtraceInject 注释非常清晰
- TinyInjector …
- linjector-rs / intruducer injection using /proc/mem
- NullTrace-Injector
JDB CALL IMPL
- 后续也可以绑定进去lua虚拟机,主打一个手动实现jdb在安卓上的调试器功能
- 至于怎么开启jdwp线程参考 这里 jdwp.ts#L243
与Lua虚拟机交互
- 安卓本地端创建一个socket服务器,远端windows/linux使用python或者再编译一个命令行程序用来与安卓通信
使用说明
使用的话还是很常规的操作
` push uinjector to /data/local/tmp `
` adb shell monkey -p com.xxx.xxx -c android.intent.category.LAUNCHER 1 -> start app `
` adb shell pidof com.xxx.xxx -> get pid `
` setenforce 0 `
File truncated at 100 lines see the full file