hooker逆向工作台:https://github.com/CreditTone/hooker
hooker 是一个基于 frida 实现的 逆向工具包。为逆向开发人员提供统一化的脚本包管理方式、通杀脚本、自动化生成hook脚本、内存漫游探测activity和service、firda版JustTrustMe。
hooker 和 frida、objection 有什么不同
- 职责不同:frida 注重打造调试引擎、objection 注重将 frida 的 api 简单封装一下让你好快速上手 frida。而 hooker 是重新站在一个安卓应用开发和安卓逆向工程师的角度去打造的更加专业 Android 逆向工作台,重新定义了逆向 android 的工作方式。
- 封装不同:frida 是基于gumjs(V8)、C/C++封装的调试引擎,用于动态 Hook 跟踪、拦截和主动调用函数等。hooker 是基于 frida 作为引擎和自己打造的 Dex 库(radar)调用 Android Framework 层代码完成的。
- 交互方式不一样:frida 和 objection 只有 attach 上才能操作各种指令,而 hooker 提供 shell 命令行交互式让你可以通过 jadx 进行动静结合分析。
- 更注提供重 Android 逆向 思路和线索:frida 和 objection 没有对任何 Android Freamwork 层 的 hook 和能主动调用代码点位进行封装,这使得难以有逆向思路。而 hooker 的几乎所有命令都是围绕 Android Freamwork 进行封装,让一个即使没有 Android 开发经验的人也能快速找到逆向分析思路。
- hook 脚本产出方式不一样:frida 你需要先进行很多语法方面的学习,才能完成对各种类的各种方法进行frida脚本的编写。hooker 不需要你了解 frida 语法细节。比如你只需通过j okhttp3.OkHttpClient:newCall 就可以生成一个 hook okhttp3.OkHttpClient 类的 newCall 方法的脚本, 即使对于任何一个被混淆的类操作也是如此。(你应该把更多的时间和精力放在逆向思路上,而不是熟悉某些语法上。)
- 提供操作原生 AndroidUI 功能:你可以 ./attach 每个 app 目录下的 android_ui.js 脚本,它提供了通过 ViewId、ViewText 找到 Android 原生的 View 并点击,或者你想强制打开某个 Activity(比如某个界面只有会员才能进入,这时候你就可以采用 Android "原生代码" 打开的方式)。
环境部署
hooker 仅支持在 Linux 和 MacOS 下运行,并且现在和将来都不会支持 windows 操作系统!
git clone 项目
ubuntu:~$ git https://github.com/CreditTone/hooker.git
ubuntu:~$ cd hooker
ubuntu:~$ ls
安装依赖
ubuntu:~/hooker$ pip install -r requirements.txt
手机连接adb
ubuntu:~/hooker$ adb devices
List of devices attached
FA77C0301476 device
手机开发环境部署
如果你的手机已经启动了frida-server,可以忽略这步。不过还是建议你采用hooker推荐的hluda-server,因为官方的frida-server在启动之后实际上会向app注入frida-agent.so作为代理,聪明的应用可以通过读取/proc/{pid}/maps检测到正在被frida调试。不过,已经有ju人帮我们重新编译了frida-server,把敏感特征去掉了。
注意:部分手机出现部署之后adb连不上的问题,那请使用deploy2.sh。
#以piexl2为例
stephen@ubuntu:~/hooker$ adb push mobile-deploy/ /sdcard/
stephen@ubuntu:~/hooker$ adb shell #进入手机命令行界面
sailfish:/ $ su #进入root权限命令行模式
sailfish:/ $ sh /sdcard/mobile-deploy/deploy.sh
disable android firewall.
start frida-server
start network adb.
deploy successfull.
stephen@ubuntu:~/hooker$ #如果你看到你的adb命令被弹出来了,表示已经正常部署。
部署之后手机的增强功能
- 1.关闭iptables防火墙,解决部分手机默认防火墙开启的问题
- 2.启动frida-server,如果你的手机是arm64他将优先启动arm64位的frida-server
- 3.在/data/mobile-deploy目录生成tools_env.rc 当你有内网穿透和网络服务转发、编辑文件、检测网络方面的需求时可以执行source /data/mobile-deploy/tools_env.rc,它将临时生成vi、telnet、frpc、tcpforward、ll命令以便你进行更便捷的开发,如图
快速定位
自动化生成frida hook脚本
frida版just_trust_me
frida版just_trust_me实战测试报告
目录
- hooker和frida、objection有什么不同
- hooker环境部署
- 1. git clone项目
- 2. 安装依赖
- 3. 手机连接adb
- 4. 手机开发环境部署
- 5. 部署之后手机的增强功能
- 快速开始
- 1. 查看可调试进程
- 2. attach一个应用
- 3. 应用工作目录
- 应用工作目录的命令
- 1. hooking
- 2. attach
- 3. spawn
- 4. objection
- 5. xinitdeploy
- 6. kill
- 应用工作目录的通杀脚本
- 1. url.js
- 2. activity_events.js
- 3. click.js
- 4. android_ui.js
- 5. keystore_dump.js
- 6. edit_text.js
- 7. text_view.js
- 8. ssl_log.js
- 9. object_store.js
- 10. hook_RN.js
- 11. just_trust_me.js
- 12. just_trust_me_okhttp_hook_finder.js
- hooker调试命令行
- a-打印Activity栈
- b-打印Service栈
- c-扫描指定Object
- d-展开Object[]、List或Map
- v-以View方式查看对象
- e-检测类在内存中是否存在
- s-正则表达式扫描类
- j-生成指定类的hook脚本
- k-生成字符串hook脚本
- hooker高级应用
- radar.dex
- 脚本的内置函数
- 1. loadDexfile(dexfile)
- 2. checkLoadDex(className,dexfile)
- 3. loadXinitDexfile(dexfile)
- 4. loadXRadarDexfile()
- 5. fastTojson(javaObject)
- 6. getPrettyString(javaObject)
- 7. getField(javaObject, fieldName)
- 8. storeObjectAndLog(javaObject)
- 原生ui自动化
- 1. startActivity(activityName)
- 2. contextStartActivity(activityName)
- 3. contextStartActivity(activityName)
- 4. home()
- 5. back()
- 6. finishCurrentActivity()
- 7. clickByText(text)
- 8. clickById(id)
- 9. hover(x,y,upStepLength)
- 10. viewTree()
- 远程frida支持
- 更新教程
- 1. clone最新项目
- 2. 方式一覆盖核心文件到你的hooker
- 3. 方式二覆盖你的应用工作目录到最新hooker