Android Hook之Frida安装使用
目录
- 安装Frida
- 安装frida-server
- frida-server配置和启动
- Frida Hook
- 实例1:
- 实例2:
- Frida 常用命令
Frida 是一个动态检测框架,允许开发人员在 Windows、macOS、Linux、iOS 和 Android 上的原生应用程序中注入 JavaScript 或 Python 脚本。该框架可用于操纵应用程序的行为、从中提取信息或与其进行通信。Frida 通常被安全研究人员和渗透测试人员用来对应用程序进行动态分析,并执行钩子函数调用、跟踪函数调用和反向代码等任务。对于移动应用开发人员来说,它也很有用,可以用来进行测试或自动化等任务。
使用Frida需要Python 3环境,python环境请大家自行下载安装。我使用的是python3.7版本。
安装Frida
pip install frida -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install frida-tools -i https://pypi.mirrors.ustc.edu.cn/simple/#查看frida版本
frida --version
安装frida-server
安装frida-server
前需要先通过adb
连接设备,然后进入虚拟机查看模拟器cpu类型
.\nox_adb.exe shell
getprop ro.product.cpu.abi
我的是x86,选择x86的frida-server安装包frida-server-16.0.8-android-x86_64.xz
。frida-server版本要和上面安装的frida
版本对应。
frida-server下载地址:https://github.com/frida/frida/releases
下载后解压
文件,然后推送到模拟器上的/data/local/tmp目录
.\nox_adb.exe push frida-server-16.0.8-android-x86 /data/local/tmp/frida-server
frida-server配置和启动
进入adb shell环境
.\nox_adb.exe shell
赋予frida-server
权限
chmod 777 frida-server
启动运行
./frida-server
开启端口转发
.\nox_adb.exe forward tcp:27043 tcp:27043
.\nox_adb.exe forward tcp:27042 tcp:27042#我用的是模拟器,如果是真机且adb配的有环境变量,用下面的命令
adb.exe forward tcp:27043 tcp:27043
adb.exe forward tcp:27042 tcp:27042
重新打开一个cmd窗口运行frida-ps -U
,查看是否正常运行。注意需要在有python环境的cmd窗口运行。
#列出设备上正在运行的进程frida-ps -U
显示已下信息说明运行正常
Frida Hook
通过frida-ps -Ua
命令可以查看到所有打开app的包名
这时候就可以试下frida-trace
了,比如想看下微信会打开哪些文件,那么执行命令:
frida-trace -U -f com.tencent.mm -i open
实例1:
下面是一个使用 Frida hook Android 应用程序中的方法的实际例子:
假设我们有一个名为 “com.example.app” 的应用程序,其中有一个类 “com.example.app.Secret”,其中有一个名为 “getSecret” 的方法。这个方法会返回一个字符串,我们想要hook它并在每次调用时打印它的返回值。
- 在目标设备上运行 Frida Server。
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"
- 我们在 hook.js文件里面编写钩子的脚本
Java.perform(function () {var Secret = Java.use("com.example.app.Secret");var secret = Secret.getSecret.implementation = function () {console.log("getSecret() called");var ret_value = this.getSecret();console.log("getSecret() returned: " + ret_value);return ret_value;};
});
- 在本地电脑上,我们可以使用 Frida 来附加到目标进程。
frida -U -f com.example.app -l hook.js
-U 参数表示附加到 USB 设备上的应用程序
-f 参数表示目标进程的包名
-l 参数表示包含 Frida 脚本的文件路径
接着,我们在 hook.js文件里面编写钩子的脚本
最后,在目标应用程序上进行一些操作,并在 Frida 控制台上查看结果,看看钩子是否正常工作。
如果一切顺利,你就可以看到钩子成功地输出了一些信息。
实例2:
使用python脚本来使用frida hook应用程序的例子:
import frida
import sysdef on_message(message, data):if message['type'] == 'send':print("[*] {0}".format(message['payload']))else:print(message)jscode = """
Interceptor.attach(Module.findExportByName("libc.so", "puts"), {onEnter: function(args) {send(Memory.readCString(args[0]));}
});
"""process = frida.get_usb_device().attach('com.example.app')
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()
其中"com.example.app" 为应用程序的包名, 上述代码将在应用程序的 “libc.so” 中钩住 “puts” 函数,并在回调中打印出信息。
这里,我们使用 frida python API hook应用程序。
frida.get_usb_device().attach('com.example.app')
连接到指定包名的应用程序进程。 然后使用script.load()
加载 JavaScript 代码并开始监听事件。
这只是一个简单的示例,实际使用中需要根据具体场景来修改代码。
Frida 常用命令
frida --version
- 显示当前 Frida 的版本。frida-ps -U
- 显示当前正在运行的 USB 设备上的进程列表。frida-ps -Uai
- 列出安装的程序frida-ps -Ua
- 列出运行中的程序(查看包名很方便)frida-ps
- 显示当前正在运行的进程列表。frida -U -l script.js -f package.name
- 通过 USB 连接到设备并在 package.name 应用程序上运行 script.js 脚本。frida-trace -i function_name -U package.name
- 在 package.name 应用程序上跟踪函数 function_name 的调用。frida-discover -U
- 在 USB 连接的设备上扫描可钩住的函数。frida -U -f package.name --no-pause
- 运行 package.name 应用程序并在启动时附加到它,不暂停它。frida-ls-devices
- 显示可用的 Frida 设备。frida-kill -U
- 结束与 USB 设备上的 Frida 相关进程。frida-trace -U -i "*libc.so*" package.name
- 在 package.name 应用程序上跟踪所有 libc.so 中的函数调用。frida -U -l script.js -f package.name -n libexample.so
- 在 package.name 应用程序上的 libexample.so 中运行 script.js 脚本。frida-trace -U -I "*sqlite3*" package.name
- 在 package.name 应用程序上跟踪所有包含“sqlite3”的函数调用.
-
Android Hook之Frida安装使用相关推荐
- Hook神器—Frida安装
上一篇文章,安装了反编译工具,本篇开始安装Hook工具-Frida. 什么是Frida Frida is Greasemonkey for native apps, or, put in more t ...
- Frida Android hook
From:https://eternalsakura13.com/2020/07/04/frida/ 目录 1.r0ysue 大佬 2.Frida 环境 2.1 pyenv 2.2 frida 安装 ...
- 【Android 逆向】Frida 框架 ( 安装 frida 12.7.5 | 安装 frida-tools 5.1.0 | PC 端 frida 与 安卓模拟器端 frida-server )
文章目录 一.安装 frida 12.7.5 二.安装 frida-tools 5.1.0 三.PC 端 frida 与 安卓模拟器端 frida-server 一.安装 frida 12.7.5 前 ...
- 浅谈android hook技术
前言 在测试android过程中,能对函数进行hook能帮助更加深入的进行测试,本文简单介绍了hook框架xposed和frida,从简单的小例子做了简单的演示,算是自己的学习的过程,是个入门的过程. ...
- 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )
From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...
- android hook 第三方app_【MiSRC】技术分享-浅谈android hook技术
注:本文为"小米安全中心"原创,转载请联系"小米安全中心" 前言 xposed框架 xposed,主页:http://repo.xposed.info/modu ...
- Android hook、检测及对抗相关
frida--hook 内存访问断点 环境:app:arm64 python 3.10 frida 15.2.2 简单的内存访问断点代码,可能还有些bug,根据apk需要自己改,下文为在 ...
- win10 安装 frida 安装配置
win10 安装 frida 安装配置 基本环境 win10 py38 frider-client: frida-15.1.0-py3.8-win-amd64 frider-server:frida- ...
- android hook方法替换,Android Hook入门教程
原创,首先国内各种rom版本不一,对官方教程中clock的hook很难做到,其次中文教程太少..楼主也是刚接触Android hook,如有错误请多多指正 首先配置Xposed框架,这一步因机而异,网 ...
最新文章
- Spring + JDBC + Struts联合开发(实现单表的CRUD)
- fastcopy会损坏硬盘_硬盘坏了数据可以修复吗?恢复技巧都在这!
- 树莓派AI视觉云台——8、WiringPi库函数
- 快手直播平台演进之路
- 关于JWT的一些攻击方法
- redis客户端连接数量_实战解析无所不知的Redis拓展应用——Info,进阶学习,无所不能...
- 操作系统复习笔记 06 CPU Scheduling CPU调度
- java实验报告13答案_(完整版)Java程序设计实验报告
- 参加平安的笔试+喜欢古天乐的坚持+想拍自己的电影+人生的无奈
- 【兼容写法】HttpServerUtility.Execute 在等待异步操作完成时被阻止。关键词:MVC,分部视图,异步...
- 不创建临时变量,交换两整数的值
- Configuration Opennebula3.8 4.x Virtual Machines Contextualizing
- 全国一级计算机考证软件
- 中国标准时间、标准时间、时间戳时间格式转换
- bzoj 4453: cys就是要拿英魂!(后缀数组+二分)
- 在Ubuntu 安装 NTL 库
- 分布式Ruby解决之道 - DRb
- 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?
- c# 转换Image为Icon
- 分类导航(更新时间:2019.1.18)
热门文章
- Hook神器—Frida安装