查看原文
其他

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脚本实现Hook的常用命令6

 

一、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代码


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

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