1.frida 环境搭建

概念

frida是一款基于python + javascript的轻量级Hook调试框架。从Java层到Native层的Hook无所不能,是一种动态的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,对逆向分析很有帮助。其操作大致为手机端安装一个server程序,然后把手机端的端口转到PC端,PC端写python脚本进行通信,python脚本中用javascript语言进行Hook 。相对于Xposed而言,它可以灵活修改代码而不用重启设备加载模块。
 

环境搭建

安装python

从python官网(https://www.python.org/)下载安装包。
在这里插入图片描述
推荐安装时候勾选 Add Python xx to PATH 配置到环境变量。
在这里插入图片描述
推荐Customize installation,后续选项默认,但可以选择自己喜欢的安装路径。
在这里插入图片描述
安装完成后在cmd输入python验证:
在这里插入图片描述
为避免python包之间的冲突,推荐配置一下虚拟环境。使用python的 venv 命令即可配置虚拟环境。

python -m venv D:\Python\fridaenv

cmd执行 D:\Python\fridaenv\Scripts\activate 即可进入虚拟环境。
在这里插入图片描述

安装frida

安装frida客户端

命令行依次输入下面两条命令:

pip install frida
pip install frida-tools

期间可能遇到有库需要升级、降级、补全,参照提示自行操作一下即可。之后在python中【import frida】,没报错就是frida安装成功了。
在这里插入图片描述
或者输入【frida --version】出现版本号即是frida安装成功。
在这里插入图片描述
输入【frida-ps --version】出现版本号即是frida-tools安装成功。
在这里插入图片描述

安装frida服务端

adb shell查看安卓设备的处理器类型【getprop ro.product.cpu.abi】,这里我的模拟器是x86:
在这里插入图片描述
根据cpu版本去 https://github.com/frida/frida/releases 下载相应frida-server:
在这里插入图片描述
下载好解压后重命名为【frida-server】push到设备【/data/local/tmp】目录下。然后赋予其777权限。
在这里插入图片描述
此时已经是安装完毕了,我们简单测试一下,adb shell启动frida-server:
在这里插入图片描述
端口转发【adb forward tcp:27042 tcp:27042】:
在这里插入图片描述
使用【frida-ps -U】查看设备上的进程信息,正常输出便是成功了:
在这里插入图片描述

使用

frida-tools方式

写一个hook.js文件。

//hook代码放在setImmediate()里
setImmediate(function () {
    Java.perform(function () {
        var clazz = Java.use("类名");
        clazz.方法名.implementation = function (参数1, 参数2, ...参数n) {
            console.log("Hook Start...");
            return this.方法名(参数1, 参数2, ...参数n); //return交还内容给程序
        }
    });
});

接着在python环境输入下面命令开始hook:

frida -U 包名 -l hook.js

python接口方式

写一个hook.py文件:

import frida, sys

jscode = """
Java.perform(function(){
    var clazz = Java.use("类名");
    clazz.方法名.implementation = function(参数1, 参数2, ...参数n)
    {
        console.log("Hook Start...");
        return this.方法名(参数1, 参数2, ...参数n); #return交还内容给程序
    }
});
"""

def message(message , data):
    if message["type"]=="send":
        print("[*] {0}".format(message['payload']))
    else:
        print(message)

process=frida.get_remote_device().attach('包名')
script=process.create_script(jscode)
script.on("message",message)
script.load()
sys.stdin.read()

为.py文件书写一个脚本hook.bat,运行开始hook。

cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT

相关资料

Python 基础教程
安装不算完事,只有理解了虚拟环境才算真正掌握 Python 环境
Frida官网

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值