查看原文
其他

Frida Hook的使用方法

gyp880115 哆啦安全 2022-05-24

目录

一、 Frida支持的功能及作用1

二、 安装和搭建Python环境1

三、 安装和搭建Frida环境2

   1. 安装pip2

   2. 安装frida2

   3. 验证frida是否安装成功3

   4. 卸载frida3

   5. 获取frida安装版本对应的frida-server版本3

   6. 验证frida是否能正常使用3

   7. Frida JavaScript API的官网4

   8. Ubuntu环境修改系统默认python版本为3.8.2(并更新)4

四、 Frida的使用实例4

   1. Hook Android Java层4

   2. Hook Android Native层5

   3. Hook Unity3d获取解密后的dll6

   4. Hook Cocos获取解密后的lua源码6

五、 Frida js Hook6

 

一、Frida支持的功能及作用

 支持Android/IOS等多平台Hook


二、安装和搭建Python环境

1. 安装Python版本(比如:Python 2.7.5),安装最新版本的Python容易导致安装Frida时报错

 

2. 把Python的默认安装路径配置到系统环境变量(默认安装路径配置好后可以直接使用pip命令

C:\python27-x64

C:\python27-x64\Scripts

 

3. 验证Python是否安装成功管理员权限执行如下命令

python --version

  

三、安装和搭建Frida环境

1. 安装pip

1) 最新pip的下载地址

https://pypi.python.org/pypi/pip

2) 解压安装

python setup.py install

 

2. 安装frida

1) 最新frida源码或frida-server的下载地址

https://github.com/frida/frida/releases

2) 通过pip安装frida(Windows环境的首选安装方法,默认安装最新版本的frida

pip install numpy matplotlib

pip install frida

pip install --user frida

 

pip install frida-tools

pip install frida-tools --user

 

npm config set unsafe-perm true

npm install frida-compile -g

npm install frida-compile

3) 编译frida源码安装(适合于Ubuntu环境的安装,Windows环境可能会导致编译出错

make

make install

 

4) 安装frida过程pip会提示PermissionError的解决方法

pip install --user frida

 

3. 验证frida是否安装成功

frida --version

 

4. 卸载frida

pip uninstall frida

 

5. 获取frida安装版本对应的frida-server版本

1) frida和frida-server的版本号必须保持一致

2) 使用root过的Android手机或模拟器

3) frida-server与Android手机或模拟器的架构必须保持一致(arm 32或arm 64或x86

4) 把frida-server拷贝到root过的Android设备中

adb push frida-server /data/local/tmp/

5) 修改frida-server的权限

chmod 777 frida-server

 

6. 验证frida是否能正常使用

1) 手机端(执行frida-server

./frida-server

 

2) PC端(转发Android tcp端口到本地

adb forward tcp:27042 tcp:27042

adb forward tcp:27043 tcp:27043

 

3) PC端(测试frida环境,如果出现Android设备的进程列表说明frida环境搭建成功

frida-ps -R


7. Frida JavaScript API的官网

https://www.frida.re/docs/javascript-api/

 

8. Ubuntu环境修改系统默认python版本为3.8.2(并更新)

sudo apt-get update

sudo apt-get upgrade

 

sudo apt-get install python-pip

sudo apt-get install python3-pip

 

cd /usr/bin

rm python

 

ln -s python3.8.2 python

python pip install --upgrade pip

 

四、Frida的使用实例

1. Hook Android Java层

1) python3 Test.py命令时注意查看python版本

 

2) 枚举***游戏进程加载的所有模块以及模块中的导出函数

 

2. Hook Android Native层

1) 获取跟踪调试***游戏相关cocos lua源码


2) 获取跟踪调试***游戏相关unity3d mono引擎dll源码

import frida

import sys

rdev = frida.get_remote_device()

session = rdev.attach("cn.***.lof")

scr = """

Interceptor.attach(Module.findExportByName("libmono.so" , "mono_image_open_from_data_with_name"), {

onEnter: function(args) {

send("mono_image_open_from_data_with_name("+Memory.readCString(args[5])+","+Memory.readCString(args[0])+")");

},

onLeave:function(retval){


}

});

"""

script = session.create_script(scr)

def on_message(message ,data):

print(message)

script.on("message" , on_message)

script.load()

sys.stdin.read()

 

3. Hook Unity3d获取解密后的dll

 

4. Hook Cocos获取解密后的lua源码

     

五、Frida js Hook

frida -U -f 包名 --no-pause -l raptor_frida_android_trace_fixed.js -o 1.log

其中"-f"参数表示需要重启并且attach上app

 

frida -U 包名 --no-pause -l raptor_frida_android_trace_fixed.js -o 2.log

只想attach到正在运行的应用程序的某一个进程可以用"-p"参数

 

先启动app,然后执行命令,再按手机返回键,最后再点击app才可以hook成功

 

其中命令中加"-l"参数指定js hook代码,load到目标进程

 

如果忘了使用"-l"参数,可以在交互窗口中用"%load"命令来指定需要加载的js代码

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存