hooker自动化生成frida脚本
# 背景需求使用frida逆向的同学免不了写frida脚本,相关frida语法肯定是要熟悉的。懒点的同学直接用objection生成,
# objection生成的脚本有如下缺点
1、方法调用采用apply(this, arguments)语法,让开发人员难以二次修改
2、方法内部没有堆栈打印
3、没有辅助方法
4、脚本输出在命令行,需要手动复制到本地文件
5、生成的脚本没有版本注释,难以维护
# hooker自动化生成frida脚本
https://github.com/CreditTone/hooker
# 下面以某音app为例我们要生成com.bytedance.frameworks.core.encrypt.RequestEncryptUtils这个类的frida脚本
# 快速开始
### 1. 查看可调试进程
```shell
stephen@ubuntu:~/hooker$ ./hooker
PIDName Identifier
-----------------------------------------------------------------------------------------------
2857Android Auto
14403信息 com.google.android.apps.messaging
12073存储已屏蔽的号码 com.android.providers.blockednumber
1574实时数据壁纸 com.ustwo.lwp
15637抖音 com.ss.android.ugc.aweme
2480搜狗输入法 com.sohu.inputmethod.sogou
12073用户字典 com.android.providers.userdictionary
13362电话 com.google.android.dialer
1704电话和短信存储 com.android.providers.telephony
1704电话服务 com.android.phone
11818知乎 com.zhihu.android
Enter the need to attach package.
:
```
### 2. attach应用
```shell
stephen@ubuntu:~/hooker$ ./hooker
PIDName Identifier
-----------------------------------------------------------------------------------------------
15637抖音 com.ss.android.ugc.aweme
2480搜狗输入法 com.sohu.inputmethod.sogou
12073用户字典 com.android.providers.userdictionary
13362电话 com.google.android.dialer
1704电话和短信存储 com.android.providers.telephony
1704电话服务 com.android.phone
11818知乎 com.zhihu.android
1451系统界面 com.android.systemui
12424紧急警报 com.android.cellbroadcastreceiver
12073联系人存储 com.android.providers.contacts
1431蓝牙 com.android.bluetooth
929设置存储 com.android.providers.settings
10149运营商设置 com.google.android.wfcactivation
14376通讯录 com.google.android.contacts
929通话管理 com.android.server.telecom
14807阿里巴巴 com.alibaba.wireless
Enter the need to attach package.
: com.ss.android.ugc.aweme#在此处输入某音进程的Identifier回车即可调试应用
:
```
提示1: 第一次调试你的应用时hooker将在当前目录生成以进程Identifier命名的应用专有工作目录,并初始化生成一些你可能会用到的通杀脚本。
提示2: 成功attach一个应用时,命令将pause在等待输入调试指令的阶段。pause状态下使用命令进行高级调试请直接跳到
![](upload/attach/202103/913632_BBKZKE8VU6WJP2E.gif)
# j - 生成指定类的hook脚本
在命令行输入j com.bytedance.frameworks.core.encrypt.RequestEncryptUtils -o com.bytedance.frameworks.core.encrypt.RequestEncryptUtils.js 就会生成指定类名称的hook脚本,也是hooker最核心的功能之一。相比objection,hooker生成的脚本有标注生产脚本的apk版本和类名。并且每个方法内部已经具备打印堆栈的功能,包括调用时间、线程id、线程名、调用对象的hashcode,调用方法用时都有很详细的描述。
![](upload/attach/202103/913632_FR682WUVCKKVYE3.png)
![](upload/attach/202103/913632_3Y974QYB2732HCU.png)
![](upload/attach/202103/913632_MK5NPZEWZ8QV6H7.png)
此脚本源码参考(https://github.com/CreditTone/ho ... uestEncryptUtils.js)
objection生成的脚本就不贴了,给objection留点面子!!!
# hooker生成脚本和objection生成脚本优势对比
| 项目 | 生成脚本命令 |能否打印堆栈|包含辅助方法|脚本版本信息注释|脚本可定制性|
| -------- | -----:| :----:| :----:| :----:| :----:|
| hooker | j -o .js | 能 | 包含 | 带apk version和生成命令 | 好 |
| objection | android hooking generate simple | 不能(白纸一张) | 不包含 | 不带 | 一般 |
# 开源这个项目的目的是让大家把精力放在逆向思路上,不要去纠结语法上的问题啦。了解原理就ok了,后面让代码去生成代码岂不美哉!
https://github.com/CreditTone/hooker 再win10的电脑上可以使用嘛?
前言:hooker仅支持在Linux和MacOS下运行,并且现在和将来都不会支持windows操作系统!windows做开发是没有灵魂的! 代码优秀 非常好的学习资料,支持分享 这个好用的 感谢分享 谢谢分享,学习了。 看着不错,可惜手上没有Linux win可惜的离开
页:
[1]
2