使用 frida hook Android app

Frida:

一种基于动态插装(dynamic instrumentation)技术的工具包,它主要是为测试人员、开发人员和逆向工程爱好者创建,在目标程序运行时,允许用户将 JavaScript代码注入其中,实现动态修改和调试。

支持修改多个平台的应用: Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD and QNX.

Github:frida/frida
frida 官方文档:frida doc


调试 Android app:

与同样出名的 Xposed 相比,Frida 不仅可以 Hook Java 层,同样支持 native 层。下面我们来具体操作:

1.安装 frida python 库:

pip install frida-tools
pip install frida        #可通过 pip install frida == 版本号 安装最佳适配自己手机的版本

虽然 JavaScript是用来编写实际注入和修改逻辑的语言,但官方提供了 Python库来管理 javascript 脚本和提供执行环境。输入 frida --version ,出现版本号即安装成功。

frida --version 
>>16.3.3

2. 手机端 adb 连接到电脑:

推荐使用无线 adb 调试,手机和电脑处在同一局域网,手机端进入开发者模式,打开无线调试,找到使用配对码配对:

电脑端打开命令窗口,输入 adb pair [手机ip:端口],回车后输入配对码完成配对。
输入 adb connect [手机ip:端口],完成连接,此端口为无线调试页面中显示的端口,并非配对端口。

adb pair [手机ip:端口]  #例如:adb pair 192.168.31.7:35405 端口每次配对都会发生变化
adb connect [手机ip:另一端口] #例如:adb pair 192.168.31.7:40535 

3. 推送 frida-server 到手机:

访问 https://github.com/frida/frida/releases 下载安卓平台的 frida-server,解压出来。需注意 frida-server 与 frida 和 frida-tools 版本需要匹配,最好保持一致。

将解压出来的文件 push 到安卓 /data/local/tmp目录下面:

adb push C:/Users/Administrator/Desktop/frida-server-16.3.3 /data/local/tmp/frida-server-16.3.3

进入 adb shell,进入 tmp 目录并赋予 frida-server 可执行权限,注意需要输入 su 获取 root 权限,否则无法访问文件目录。无误后输入 ./frida-server-16.3.3,未报错即运行成功。

adb shell
su  
cd data/local/tmp
chmod 777 frida-server-16.3.3#运行:
./frida-server-16.3.3

注意:新版本 frida-server 不再需要端口转发,旧版需要新开一个 CMD 窗口执行 adb forward tcp:27042 tcp:27042,来将手机端口转发到电脑端口,便于通信。


Hook 前的最后一步:

以 Android 平台为例,了解一下 frida 的工作流程:

  1. frida-server:运行在安卓端,与电脑端进行通信,接收电脑端的调试请求,并将 JavaScript 编写的 hook 代码注入到目标 app 中。
  2. 电脑端:与 frida-server 通信,可以使用多种编程语言编写脚本和管理注入过程,最常用的是 Python。
  3. JavaScript脚本:编写具体的注入和修改逻辑,并通过电脑端提供的环境被推送到 frida-server 中,从而注入到目标 app。

对此,我们需要建立两个文件,一个 hook.js用于存放具体的修改逻辑,一个 hook.py用于自动管理注入流程,如:在合适的时机自动注入。

hook.py:

import frida
import sys
import time# 应用包名
app_package_name = 'com.tencent.karaoke'# 延迟注入时间(秒),防止dex未加载
delay_time = 2# hook脚本所在路径
hookJs='C:/Users/Administrator/Desktop/hook.js'def on_message(message, data):if message['type'] == 'send':print("[*] {0}".format(message['payload']))elif message['type'] == 'error':print("[!] {0}".format(message['stack']))# 启动应用程序
device = frida.get_usb_device()
pid = device.spawn([app_package_name])
device.resume(pid)
time.sleep(1)  # 等待应用程序启动# 延迟注入
print(f"Waiting for {delay_time} seconds before injecting script...")
time.sleep(delay_time)# 注入脚本
with open(hookJs, 'r',encoding='utf-8') as f:script_code = f.read()session = device.attach(pid)
script = session.create_script(script_code)
script.on('message', on_message)
script.load()
print("[*] Script injected successfully.")
sys.stdin.read()

hook.js 示例:

// 1.从内存中寻找包含android字样的类并打印
Java.perform(function() {Java.enumerateLoadedClasses({onMatch: function(className) {if (className.includes('android')) {console.log(className);}},onComplete: function() {console.log('Class enumeration complete');}});
});

将应用包名修改为需要被 hook 的 app,然后输入命令运行:

 python hook.py

开始 hook 吧!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ONLYOFFICE8.1版本桌面编辑器的测评

首先我们先出示一下我们所测评官网的链接: ONLYOFFICE官网链接:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 我们这款ONLYOFFICE8.1版本有这一下优点 1.解决PDF痛点 ONLYOFFICE在PDF编辑方面支持高亮显示、下划线和删除线、添加批注等功能&#…

【2024最新版】Eclipse安装配置全攻略:图文详解

目录 1. Eclipse介绍1.1 背景1.2 主要特点和功能1.3 版本发布1.4 优势与劣势 2. 下载Eclipse3. 安装Eclipse4. 启动Eclipse 1. Eclipse介绍 Eclipse是一个开源的、基于Java的可扩展开发平台,主要用于Java开发者,但也支持其他语言如C/C、PHP、Python等。…

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF,libc版本2.31,经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…

ansible自动化运维,(2)ansible-playbook

三种常见的数据格式: XML:可扩展标记语言,用于数据交换和配置 JSON:对象标记法,主要用来数据交换或配置,不支持注释 YAML:不是一种标记语言,主要用来配置,大小写敏感&…

科技未来·无限可能“2024世亚智博会”

随着科技的飞速发展,人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力,不仅极大地推动了经济和社会的发展,更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域,其创新和应…

【ZYNQ】VDMA 的介绍

AXI VDMA 是 Xilinx 官方提供的高带宽视频 DMA IP,用于实现 AXI4-Stream 视频数据流与 AXI4 接口数据的转换,同时提供帧缓存与帧同步控制功能。本文主要介绍 AXI VDMA 的基本结构与原理,并简要介绍 VDMA 的配置与使用方法。 目录 1 VDMA 简介…

egg代码生成器

今天给大家分享一下egg的代码生成器,这个其实原理很简单,说白了就是用到了nodejs的一个文件io的操作,通过一系列配置参数解析然后生成一个很长的字符串,写入到文件中,最后导出到我们指定的文件夹。 前提概要 为什么我…

web前端——VUE

1.什么是框架? ①概述 框架结构就是基本功能,把很多基础功能已经实现了、封装了。在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率 ②前端框架 javaScript是原生的 vue.js: 是一个js框架&…

最新解决docker镜像无法下载问题

1.增加或修改daemon.json文件 ​ cd /etc/dockervi daemon.json{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }2.重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 3.验证 下载https://txodoo.cn/blog/11/d…

双指针dd d df f

像二分这样的算法,我们甚至可以不用管,直接在问题空间之内搜索,但是双指针也非常好用,帮助我们来减少枚举对象,我们来总结一下这经典的三个题目: 最长上升不重复子序列活动 - AcWings 首先一定要写…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统,涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备,包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等,通过模块化设计实现了对电路板的…

shell中的函数

统计家目录下.c文件的个数 终端输入一个.sh文件,判断文件是否由可执行权限,如果有可执行权限运行脚本,没有可执行权限添加可执行权限后,再运行脚本 写一个函数,输出当前用户uid和gid,并使用变量接收结果 终…

【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型(LLM)工作原理的工具,旨在增加这些复杂系统的透明度。它提供了一个交互式界面,用户可以通过它观察、分析模型对特定输入(prompts)的反应…

加速科技Flash存储测试解决方案 全面保障数据存储可靠性

Flash存储芯片 现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性存储器,作为现代电子设备中不可或缺的核心组件,承载着数据的存取重任。这种小巧而强大的芯片,以其低功耗、可靠性、高速的读写能力和巨大的存储容量&…

OpenGL-ES 学习(6)---- 立方体绘制

目录 立方体绘制基本原理立方体的顶点坐标和绘制顺序立方体颜色和着色器实现效果和参考代码 立方体绘制基本原理 一个立方体是由8个顶点组成,共6个面,所以绘制立方体本质上就是绘制这6个面共12个三角形 顶点的坐标体系如下图所示,三维坐标…

【目标检测】Yolov8 完整教程 | 检测 | 计算机视觉

学习资源:https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、准备图片images 收集数据网站:OPEN IMAGES 2、准备标签labels 网站:CVAT 有点是:支持直接导出yolo格式的标…

搜索引擎的妙用:掌握这些技巧,让你的搜索更高效!

搜索引擎是我们日常生活中不可或缺的工具,它帮助我们快速找到所需的信息。但是,你真的知道如何高效地使用搜索引擎吗?下面,我将分享一些高级搜索技巧,让你的搜索更加精准和高效。 1. 完全匹配搜索 当你想要搜索一个特…

第三十三篇——互联网广告:为什么Google搜索的广告效果好?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 对于信息的利用,再广告这个维度中去洞察,你又能发…

光伏储能为什么变得那么受欢迎?

在当今这个追求可持续发展和清洁能源的时代,光伏储能技术逐渐崭露头角,并成为了能源领域的热门话题。其受欢迎程度不断攀升,背后有着多方面的原因。光伏储能技术的优点众多,涵盖了多个方面,以下是关于其安全、寿命等关…

【BUG记录】条件查询没有查询结果 || MybatisPlus打印查询语句

结论 先说结论,查询没有结果,可能是数据库连接,数据问题之类,最有可能的根本原因是查询语句问题,需要想办法检查查询语句,使用mybatisPlus等自动生成查询语句的框架不能直接看语句,可以依靠日志…