hooker Documentation

Hooker is a Frida-based reverse engineering toolkit for Android. It offers a user-friendly CLI, universal scripts, auto hook generation, memory roaming to...

RAW Doc

免责声明
本项目的所有内容仅供学习与技术交流使用,旨在帮助开发者理解移动应用的结构和工作原理。

本项目不包含任何针对特定应用的破解操作或侵权内容。
针对某些app存在的简单解包技术内容在各大技术论坛网站均大量存在,并无对这些app造成实际损害
本项目无意协助任何非法用途,包括但不限于绕过版权保护、修改应用功能或获取未经授权的数据。
请确保在使用本项目工具时遵守相关法律法规,并仅用于个人学习或研究目的。

简体中文 | English

欢迎使用hooker逆向工作台

hooker是一个基于frida实现的逆向工具包。旨在为安卓逆向开发人员提供一个舒适的命令行界面和一些常用的通杀脚本、自动化生成hook脚本、内存漫游探测activity和service、frida版JustTrustMe、boringssl unpinning全网app通杀

为什么你需要hooker?


目录

手机保证root,无需任何手动启动frida-server等一切配置,hooker会帮你搞定一切。x86架构的模拟器不兼容

Mac/Linux配置hooker运行环境

Windows请先完成WSL安装,然后跳回到这里

1. git clone项目

shell
stephen@Mac:~$ git clone https://github.com/CreditTone/hooker.git
stephen@Mac:~$ cd hooker

2. 安装python3依赖

shell
stephen@Mac:~/hooker$ pip3 install -r requirements.txt

3. root手机usb连接PC

shell
stephen@Mac:~/hooker$ adb devices
List of devices attached
FA77C0301476	device

4. 启动hooker

这里注意,不要用绝对路径去执行,一定要cd到hooker目录下执行python3 hooker.py

hooker启动后将收集所有可调试app的信息,字段含义如下

  • PID:当前app的主进程id,如果app没有启动则为0
  • APP:app的名称
  • IDENTIFIER:app的包名
  • EXIST_REVERSE_DIRECTORY:如果app曾经被调试过就是✅,从没被调试过就是❌
text
/* Detailed source-code truncated for AI context efficiency. */

5. 输入调试应用包名

  • 输入调试应用包名回车后,如果是第一次调试应用,hooker将创建应用目录,应用目录名称为应用的Identifier,用于存放所有js脚本和快捷命令。

  • hooker将帮你检测当前app是否启动且在手机前台,如不在启动帮你启动,如不在前台帮你切到前台

  • frida通杀脚本可以在hooker交互式命令行下用attach/spawn执行,也可以手动cd到应用目录用快捷命令或原生的frida命令执行。

  • 你可以修改应用工作目录下任何脚本

shell
hooker(Identifier): cxm.shxpxx.sg
✅ App cxm.shxpxx.sg is already in the foreground
Creating working directory: cxm.shxpxx.sg
Generating frida shortcut command...
Generating built-in frida script...
pull /data/app/cxm.shxpxx.sg-L8zkrpFVICv0-hOrtmPPxA==/base.apk to cxm.shxpxx.sg/ShopeeSG_3.43.40.apk successful
Working directory create successful
just_trust_me.js                                 empty.js                                         keystore_dump.js
edit_text.js                                     activity_events.js                               find_boringssl_custom_verify_func.js
ssl_log.js                                       hook_register_natives.js                         click.js
get_device_info.js                               apk_shell_scanner.js                             dump_dex.js
object_store.js                                  hook_artmethod_register.js                       replace_dlsym_get_pthread_create.js
just_trust_me_for_ios.js                         trace_initproc.js                                android_ui.js
jni_method_trace.js                         url.js                                           just_trust_me_okhttp_hook_finder_for_android.js
text_view.js                                     find_anit_frida_so.js
某皮 >

6. 查看help信息

在使用hooker过程中,如不记得命令,可随时调出help查看操作手册。

shell
某皮 > help
h, help                                      show this help message
a, activitys                                 show the activity stack
s, services                                  show the service stack
o, object [object_id]                        show object info by object_id
v, view [view_id]                            show view info by view_id of view
gs, generatescript [class_name:method_name]  specify the class name and method name to generate a frida hook java script file. For example: generatescript
                                             okhttp3.Request$Builder:addHeader
p, proxy [socks5_proxy_server]               set up a socks5 proxy for this app. For example: proxy socks5://192.168.0.100:9998
up, unproxy                                  remove socks5 proxy for this app
trust, justtrustme                           quickly spawn just_trust_me.js script to kill all ssl pinning
ls                                           list all the frida scripts of the current app
attach [script_file_name]                    quickly execute a frida script, similar to executing the command "frida -U com.example.app -l xxx.js". For example: attach url.js
spawn [script_file_name]                     quickly spawn a frida script, similar to executing the command "frida -U -f -n com.example.app -l xxx.js". For example: spawn
                                             just_trust_me.js
restart                                      restart this app
pid                                          get pid of this app main process
uid                                          get pid of this app
exit                                         return to the previous level
某皮 >

7. 嵌入式webserver

hooker 支持在手机中注入一个轻量级 webserver。启动后会在目标 App 进程内开启一个 HTTP 服务,默认端口是 8080。这个服务既可以暴露 patch 项目里自定义的 controller,也会自动挂载一组内置调试接口。

  • 启动内置 webserver
shell
某音火山版 > webserver start
Http server port: 8080
Http server: http://10.112.101.249:8080

启动内置 webserver 后,浏览器打开首页即可看到当前已注册的 API 列表。常用能力包括:

  • 服务管理:/ 查看欢迎页和接口清单,/stop 停止当前 webserver。

  • UI 自动化:/hooker/ui/... 提供点击控件、按文本点击、按坐标点击、设置输入框文本、触发返回/Home、启动 Activity、获取屏幕信息、翻页、滚动 RecyclerView、尝试关闭弹窗等能力,适合做半自动化操作和页面联调。

  • 页面结构导出:/hooker/uiauto/dump、/hooker/uiauto/window_dump.xml、/hooker/uiauto/window_dump.json 可以导出当前窗口层级,方便定位控件和分析页面结构。

  • 截图能力:/hooker/screencap/screenshot 可直接调用系统 screencap 截图;/hooker/mediaprojection/... 支持申请 MediaProjection 权限并抓取整屏 PNG,更适合做远程观察和自动化闭环。

  • App 信息读取:/hooker/appinfo 可读取包名、版本、组件、权限、签名和目录信息;/hooker/appinfo/shared_prefs、/hooker/appinfo/databases、/hooker/appinfo/read_table 可以直接查看 shared_prefs、数据库结构和表数据。

  • 类/对象辅助调用:/hooker/classhelper/invoke_static_method、/hooker/classhelper/invoke_method 支持通过 HTTP 直接调用静态方法或已缓存对象的方法,便于快速验证算法、补环境或调试业务逻辑。

  • 文件回传:/file?filename=... 可以把绝对路径文件或 webserver 缓存目录里的文件直接通过 HTTP 返回。

  • MCP 风格 UI 工具:/hooker/mcp/ui/tools 和 /hooker/mcp/ui/call 把常用 UI 操作封装成统一工具接口,便于外部脚本或 Agent 通过 HTTP 驱动当前 App。

  • 7.1 启动自定义 webserver

给定一个patch工程的jar包,将爬虫接口启动为webserver。

shell
某宝 > webserver start taxbax-patch.jar
Converting taxbax-patch.jar to taxbax-patch.dex...
Successfully converted to taxbax-patch.dex (7160 bytes)
push file OK /data/user/0/com.taxbax.taxbax/hooker_server.dex
Http server port: 2026
Http server: http://10.112.101.249:2026

这里的 taxbax-patch.jar 可以理解成“运行在目标 App 进程里的业务插件”。hooker 会先把 jar 转成 dex,再注入到目标进程中,扫描其中带注解的类,然后把这些类注册成 HTTP 路由。

  • 7.2 自定义 webserver 适合做这类事情:

  • 暴露目标 App 内部已经存在的业务能力,比如搜索、评论、详情页、签名、加解密、用户资料、直播接口等。

  • 直接复用目标 App 自己的登录态、网络栈、环境参数和对象实例,避免在外部重复补协议。

  • 把异步回调、Observable、Listener、页面对象调用收敛成一个同步 HTTP 接口,对外统一返回 JSON 或文本。

你可以像开发springboot一样优雅的开发嵌入式的httpserver,并调用目标app的任何java代码而无需像有些xposed插件一样TMD的反射、反射、再反射,跟SB一样😊

  • 用 @HookerWebServerConfiguration(port = 2026) 指定端口,不写时默认走 8080。
  • 用 @HookerController("/taobao")、@HookerController("/douyin") 这类注解定义业务前缀。
  • 用 @HookerRequestMapping(path = "/getProductDetail") 之类的注解暴露具体接口。
  • 用 @HookerRequestParam、@HookerRequestPostJson 接收查询参数和 POST JSON。

具体开发文档,将在https://github.com/CreditTone/radar4hooker详细介绍

  • 7.3 webserver 持久化

如果你已经为某个 App 开发好了 patch 工程,并且需要在多台设备上长期部署,那么 frida + hooker 的临时注入方式会比较重。针对这种场景,作者提供了 Xposed 插件 HookerServer:

https://github.com/CreditTone/HookerServer

只要手机支持 Xposed/LSPosed,就可以借助这个插件把 webserver 持久化到目标 App 中。

操作步骤:

  1. 从 https://github.com/CreditTone/HookerServer/releases 下载最新 APK。
  2. 把 patch.dex 推送到 /data/user/0/{package}/hooker_server.dex。
  3. 在 Xposed/LSPosed 中启用 HookerServer,并勾选目标 App。
  4. 重启 App,webserver 即可自动启动。

其中 patch.dex 可以在第一次部署 patch.jar 后获得,hooker 会自动完成 jar 转 dex,并把生成结果放到目标应用的工作目录中。


8. 自动化生成frida脚本

自动化生成脚本是hooker的杀器。虽然现在AI大模型也可以写,但是我们离内存近,更快,也不需要联网。生成的脚本自带打印堆栈等信息,和一些你可能需要的扩展方法。
另外在生成脚本的过程中,命令行类名、方法名提示也可以当作搜索使用,能通过关键词快速搜索定位类方法。hooker搜索类比jadx快很多,不信就试试......

  • Command语法:gs, generatescript [class_name:method_name]

  • 8.1 生成指定方法的frida hook脚本:
    gs okhttp3.Request$Builder:addHeader,参数部分(String, String)不是必须写的

shell
某信拍 > gs okhttp3.Request$Builder:addHeader(String, String)
Generating frida script, please wait for a few seconds
frida hook script: okhttp3.Request.Builder.addHeader.js
某信拍 >
js
//cat okhttp3.Request.Builder.addHeader.js
Java.perform(function() {
    var okhttp3_Request_Builder_clz = Java.use('okhttp3.Request$Builder');
    var okhttp3_Request_Builder_clz_method_addHeader_2grl = okhttp3_Request_Builder_clz.addHeader.overload('java.lang.String', 'java.lang.String');
    okhttp3_Request_Builder_clz_method_addHeader_2grl.implementation = function(string, string_x2) {
        var executor = this.hashCode();
        var beatText = 'public okhttp3.Request$Builder okhttp3.Request$Builder.addHeader(java.lang.String,java.lang.String)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_Request_Builder_clz_method_addHeader_2grl.call(this, string, string_x2);
        console.log("header name:" + string + " header value:" + string_x2);
        printBeat(beat);
        return ret;
    };
});

  • 8.2 生成指定类的所有成员方法的frida hook脚本:
    gs okhttp3.Request$Builder
shell
某信拍 > generatescript okhttp3.Request$Builder
Generating frida script, please wait for a few seconds
frida hook script: okhttp3.Request.Builder.allfunc.js

text
/* Detailed source-code truncated for AI context efficiency. */

  • 8.3 生成指定类的构造方法的frida hook脚本:
    gs okhttp3.Request$Builder:_ 或者gs okhttp3.Request$Builder:\
shell
某信拍 > gs okhttp3.Request$Builder:()
Generating frida script, please wait for a few seconds
frida hook script: okhttp3.Request.Builder._init.js
js
//cat okhttp3.Request.Builder._init.js
//okhttp3.Request$Builder:()
Java.perform(function() {
    var okhttp3_Request_Builder_clz = Java.use('okhttp3.Request$Builder');
    var okhttp3_Request_Builder_clz_init_uw3i = okhttp3_Request_Builder_clz.$init.overload();
    okhttp3_Request_Builder_clz_init_uw3i.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public okhttp3.Request$Builder()';
        var beat = newMethodBeat(beatText, executor);
        var returnObj = okhttp3_Request_Builder_clz_init_uw3i.call(this);
        printBeat(beat);
        return returnObj;
    };
    var okhttp3_Request_Builder_clz_init_e58t = okhttp3_Request_Builder_clz.$init.overload('okhttp3.Request');
    okhttp3_Request_Builder_clz_init_e58t.implementation = function(v0) {
        var executor = this.hashCode();
        var beatText = 'okhttp3.Request$Builder(okhttp3.Request)';
        var beat = newMethodBeat(beatText, executor);
        var returnObj = okhttp3_Request_Builder_clz_init_e58t.call(this, v0);
        printBeat(beat);
        return returnObj;
    };
});

9. 列出应用目录所有frida脚本

  • 查看应用目录下所有的脚本,这里有hooker给你生成的通杀脚本,也有您生成的指定hook脚本,您可以修改定制。

  • 如果您有自定义的脚本放到应用目录下,ls命令可以将脚本名称刷入命令行提示缓存

shell
某皮 > ls
just_trust_me.js                                 empty.js                                         keystore_dump.js
okhttp3.Request.Builder.addHeader.js             edit_text.js                                     activity_events.js
find_boringssl_custom_verify_func.js             ssl_log.js                                       hook_register_natives.js
click.js                                         get_device_info.js                               apk_shell_scanner.js
dump_dex.js                                      object_store.js                                  hook_artmethod_register.js
replace_dlsym_get_pthread_create.js              just_trust_me_for_ios.js                         trace_initproc.js
android_ui.js                                    jni_method_trace.js                         url.js
just_trust_me_okhttp_hook_finder_for_android.js  text_view.js                                     find_anit_frida_so.js
某皮 >

10. attach执行frida脚本

在hooker下执行frida脚本,您只需要输入attach【空格】脚本名称会自动弹出提示。上下选择需要的脚本按tab键即可自动输入全名称。
这是hooker在追求极致的工匠精神,帮助您从开波音737到开空客320的跳跃。

日志同步:attach / frida 执行脚本时,Frida 脚本的 send() 输出会自动同步保存到应用工作目录下的同名 .log 文件。例如 attach url.js 会生成 url.log,方便喂给 AI 分析。

text
/* Detailed source-code truncated for AI context efficiency. */

11. 快捷设置socks5无感代理

通过iptables链路层转发包实现一键设置代理,优势是APP完全无感知被代理。推荐使用charles的socks5

设置代理后必须主动去关闭代理,代理不会自动取消

shell
某音 > proxy socks5://10.112.99.11:9998
proxy socks5://10.112.99.11:9998 OK
某音 >

12. frida版JustTrustMe(包括boringgssl)

关掉SSL证书校验

text
/* Detailed source-code truncated for AI context efficiency. */

13. spawn执行frida脚本

日志同步:spawn / fridaf 执行脚本时,Frida 脚本的 send() 输出同样会自动同步保存到同名 .log 文件。例如 spawn just_trust_me.js 会生成 just_trust_me.log。

shell
某信拍 > spawn just_trust_me.js
Frida output logging -> com.uxin.buyerphone/just_trust_me.log
Package name: com.xxx.buyxxphone
javax.net.ssl.SSLContext.init('[Ljavax.net.ssl.KeyManager;', '[Ljavax.net.ssl.TrustManager;', 'java.security.SecureRandom') was hooked!
javax.net.ssl.TrustManagerFactory.getTrustManagers() was hooked!
javax.net.ssl.SSLContext.init('[Ljavax.net.ssl.KeyManager;', '[Ljavax.net.ssl.TrustManager;', 'java.security.SecureRandom') was hooked!
// 这里省略无数日志.............

14. 取消代理设置

一键取消代理

shell
某音 > unproxy
unproxy OK
某音 >

15. 重启app

shell
某信拍 > restart
restarts com.xxx.buyxxphone

16. 获取uid和pid

shell
某信拍 > uid
10189
某信拍 > pid
3509

17. pull文件

快捷拉取文件到本地应用工作目录

shell
转某 > pull /data/app/com.xxx.zhuanmou-o1ZYFILxnOCIpvvqJQKrpQ==/lib/arm64/libmsaoaidsec.so
pull /data/app/com.xxx.zhuanmou-o1ZYFILxnOCIpvvqJQKrpQ==/lib/arm64/libmsaoaidsec.so to com.xxx.zhuanmou/libmsaoaidsec.so successful
转某 > pull /data/app/com.xxx.zhuanmou-o1ZYFILxnOCIpvvqJQKrpQ==/lib/arm64/libsignLib.so
pull /data/app/com.xxx.zhuanmou-o1ZYFILxnOCIpvvqJQKrpQ==/lib/arm64/libsignLib.so to com.xxx.zhuanmou/libsignLib.so successful
转某 > pull /data/app/com.xxx.zhuanmou-o1ZYFILxnOCIpvvqJQKrpQ==/lib/arm64/libweconvert.so
pull /data/app/com.xxx.zhuanmou-o1ZYFILxnOCIpvvqJQKrpQ==/lib/arm64/libweconvert.so to com.xxx.zhuanmou/libweconvert.so successful

18. r0capture

hooker集成了r0capture,抓包产生的pcap文件保存在{应用包名}/r0capture_ssl.pcap路径下,如酷安:com.coolapk.market/r0capture_ssl.pcap

text
/* Detailed source-code truncated for AI context efficiency. */

19. upgrade

hooker更新频繁,平均周更约10次。upgrade帮助您随时同步最新代码和相关文件到本地。

shell
MacBook-Pro-32G-2T:hooker stephen256$ python3 hooker.py upgrade
Upgrading hooker
Repository updated with 'git pull'.
Updating mobile-deploy/libext64.so
Updating mobile-deploy/libext.so
Updating mobile-deploy/libevent-2.1.so
Please restart hooker

应用目录通杀脚本

url.js

该脚本会 hook 应用中 构造 URL 或 URI 对象的多个关键方法,用于打印或分析网络请求相关的信息(如目标 URL)

Hook 的目标方法
java.net.URI(String) 构造函数

java.net.URL(String) 构造函数

okhttp3.Request.Builder.build() 方法(常用于创建 HTTP 请求)

com.android.okhttp.Request.Builder.build()(系统自带 okhttp)

android.net.Uri.parse(String) 方法(处理 URI 的常用工具方法)

推荐命令:frida url.js


just_trust_me.js

frida版本的just_trust_me,用于绕过 Android 系统中的证书校验逻辑,允许抓取 HTTPS 流量,适用于基于 OkHttp、HttpURLConnection 等网络库的应用。

支持boringssl unpinning,理论上支持全网所有app,除非像美团一样做了登录风控抓不了。

在hooker命令行模式封装了快捷命令justtrustme
这在上文 执行justtrustme kill掉所有ssl验证有介绍

亦可直接执行脚本 spawn just_trust_me.js


activity_events.js

当你需要跟踪start某个Activity启动时可执行,获取startActivity的intent信息和调用堆栈。

推荐命令:frida activity_events.js


click.js

用于监听 Android 应用中点击事件(OnClickListener),主要用于分析用户交互操作,获取被点击View的真实ViewClass

推荐命令:frida click.js


android_ui.js

封装一些操作原生Android UI的函数。如startActivity(activityName)、home()、back()、finishCurrentActivity()、clickByText(text) 等等,命令使用得用attach './attach android_ui.js' 原理是借助radar.dex作为代理操作Android原生View。

推荐命令:frida android_ui.js


keystore_dump.js

在https双向认证的情况下,dump客户端证书为p12。存储位置:/data/user/0/{packagename}/client_keystore_{nowtime}.p12 证书密码: hooker。原理是hook java.security.KeyStore的getPrivateKey和getCertificate方法,因为客户端向服务发送证书必调这个方法。强烈建议keystore_dump.js用spawn模式启动,

推荐命令:spawn keystore_dump.js


edit_text.js

用于跟踪获取 EditText 的 getText() 事件,并获取其真实 Class 类型。
EditText 通常绑定搜索按钮或输入事件,是定位“搜索”接口实现代码的有效入口,辅助识别核心业务逻辑。

推荐命令:frida edit_text.js


hook_register_natives.js

用于拦截 Android JNI RegisterNatives 函数的 Frida 脚本,主要用于分析和修改原生方法(native methods)的注册过程

推荐命令:spawn hook_register_natives.js


text_view.js

用于跟踪 TextView 的 setText() 和 getText() 调用,并输出其真实 Class。
常用于提取页面展示的明文数据,以及获取堆栈调用信息,从而追踪业务层的 model 构造逻辑和数据源。

推荐命令:spawn/attach text_view.js


activity_events.js

用于跟踪 Android Activity 生命周期(如 onCreate、onResume)的 Frida 脚本,帮助分析 Activity 初始化逻辑。

推荐命令:spawn/attach activity_events.js


ssl_log.js

用于在 native 层跟踪 SSL 握手过程并记录 CLIENT_RANDOM,配合 tcpdump 抓包数据后可用于 TLS 明文还原分析。

推荐命令:spawn/attach ssl_log.js


just_trust_me_for_ios.js

iOS 版的证书校验绕过脚本,配合抓包代理使用,适用于 SSL Pinning 场景。

推荐命令:spawn/attach just_trust_me_for_ios.js


dump_dex.js

执行 spawn dump_dex.js 可直接脱壳,适用于多数简单壳场景。
Android ART 使用 dex2oat 编译 DEX 为 native 指令,有些脱壳失败时建议手动清除 /data/app/-*/oat/arm64/。

推荐命令:spawn dump_dex.js


trace_init_proc.js

用于 trace init_proc 函数调用流程的脚本。
需手动指定 startAddr、endAddr 和模块名 somodule,适合分析 native 启动流程。

推荐命令:spawn/attach trace_init_proc.js


hook_artmethod_register.js

用于拦截 Android ART 虚拟机中 ArtMethod 的注册函数,适合深入分析虚拟机行为与 native 方法绑定。

推荐命令:spawn/attach hook_artmethod_register.js


find_anit_frida_so.js

用于发现 app 中加载的可疑 anti-frida 动态库,识别顺序为:谁最后加载、谁让 app 崩溃,谁就是反调试的嫌疑人。

推荐命令:spawn/attach find_anit_frida_so.js


jni_method_trace.js

用于追踪 Native 层回调 Java 方法的行为,可观察 so 层与 Java 的交互,帮助分析 JNI 层调用栈。

推荐命令:spawn/attach jni_method_trace.js


replace_dlsym_get_pthread_create.js

专门对抗 libmsaoaidsec.so 中使用 dlsym 获取 pthread_create 的反调试方式。
本脚本 hook dlsym,用于劫持线程创建行为,从而对抗动态加载的反调试代码。

推荐命令:spawn/attach replace_dlsym_get_pthread_create.js


find_boringssl_custom_verify_func.js

用于查找 boringssl 中注册的自定义证书验证函数,通过 hook SSL_CTX_set_custom_verify 定位目标函数,并实现强制信任(返回 0)。

使用建议:
执行前请清除目标 app(如某音)的缓存,以保证函数重新注册。

推荐命令:spawn find_boringssl_custom_verify_func.js


get_device_info.js

用于全面获取设备指纹信息,包括:

  • Android ID、IMEI、指纹、厂商、系统信息
  • 安装的所有应用(含系统 app)
  • 传感器信息(如名称、厂商、延迟)
  • 系统状态(是否 root、运行时、内核信息等)

推荐命令:attach get_device_info.js

提供以下 4 个调用方法:

  • getBasicInfo():基础信息
  • getInstalledPackages():应用列表
  • getSensos():传感器信息
  • getSystemInfo():系统与运行环境

apk_shell_scanner.js

动态识别 APK 加壳技术的脚本,支持多种主流壳,如娜迦、爱加密、360、梆梆、腾讯御、网易易盾等。

推荐命令:attach apk_shell_scanner.js

识别结果示例:

  • This app is protected by {爱加密}
  • This app is not protected or uses an unknown protection scheme

bypass_frida_svc_detect.js

绕过 app 对 Frida Server 的检测逻辑,适用于反调试保护较强的目标应用。

推荐命令:spawn/attach bypass_frida_svc_detect.js


bypass_root_detect.js

用于绕过 root 检测逻辑,使得 root 环境下也能正常运行 app。

推荐命令:spawn/attach bypass_root_detect.js


bypass_vpn_detect.js

用于绕过 VPN 检测逻辑,避免 app 阻止使用代理、VPN 或抓包工具。

推荐命令:spawn/attach bypass_vpn_detect.js


hook_encryption_algo.js

用于 hook 典型加密算法(如 AES、RSA、HMAC 等)的实现函数,分析加密参数、明文与密文数据。

推荐命令:spawn/attach hook_encryption_algo.js


hook_encryption_algo2.js

拓展版本的加密算法 hook 脚本,适用于更复杂的加密场景或多路加密调用链。

推荐命令:spawn/attach hook_encryption_algo2.js

webview_enable_debug.js

该脚本用于 Hook Android 应用中的 WebView 行为,特别是在 WebView 初始化和执行 JavaScript 时进行监控和调试。适用于分析 WebView 加载的页面、动态注入的 JavaScript 代码,以及定位 JS 调用位置,常用于逆向分析、抓取数据或识别加固方案中的 Web 容器。

推荐命令:spawn webview_enable_debug.js

Windows安装WSL

WSL是适用于Linux 的Windows 子系统(WSL)允许开发人员直接在Windows 上运行GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),无需传统虚拟机或双启动设置的开销。

1. 安装wsl ubuntn24.04

访问:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#downloading-distributions

下载Ubuntu24.04

双击Ubuntu2404-240425.AppxBundle 安装Ubuntu

2. 进入wsl,配置代理

窗口输入wsl进入ubuntu命令行

  • cmd

  • wsl

切换到root用户

  • sudo su

配置翻墙代理,如果你有

3. 安装python3.8和frida

  • apt update
  • apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev
    libreadline-dev libsqlite3-dev wget curl llvm xz-utils tk-dev
    libffi-dev liblzma-dev
  • apt install -y git
  • apt install -y pyenv
  • pyenv install 3.8.8
  • pyenv local 3.8

自定义frida-server

  • 将您自定义的frida-server文件拷贝到mobile-deploy文件夹下
  • 修改hooker.py,default_frida_server_arm和default_frida_server_arm64变量的名字为你自定义的文件名
python
default_frida_server_arm = "your-custom-frida-server-android-arm"
default_frida_server_arm64 = "your-custom-frida-server-android-arm64"

hooker命令行快捷键

  • Ctrl + U:整行清空

  • Ctrl + W:删除一个单词

  • Ctrl + K:从光标删到行尾