西二旗搬砖仔 发表于 2021-3-31 20:19

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

弘德书院 发表于 2021-4-2 11:27

再win10的电脑上可以使用嘛?

hehehero 发表于 2021-12-10 16:02

前言:hooker仅支持在Linux和MacOS下运行,并且现在和将来都不会支持windows操作系统!windows做开发是没有灵魂的!

爱你小吉君 发表于 2021-4-1 15:01

代码优秀

lifz888 发表于 2021-4-1 15:36

非常好的学习资料,支持分享

wykdz 发表于 2021-4-1 17:02

这个好用的

来根烟 发表于 2021-4-2 07:35

感谢分享

First丶云心 发表于 2021-4-2 07:43

whngomj 发表于 2021-4-2 08:38

谢谢分享,学习了。

不苦小和尚 发表于 2021-4-25 07:08

看着不错,可惜手上没有Linux

小飞虫 发表于 2021-11-19 17:00

win可惜的离开
页: [1] 2
查看完整版本: hooker自动化生成frida脚本