10.安卓逆向2-frida hook技术-frida基本使用-frida指令(用于hook)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:图灵Python学院

工具下载:

链接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwd=zy89

提取码:zy89

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:9.安卓逆向2-frida hook技术-frida基本使用-frida-ps指令

frida的hook主要是学习下图红框的参数,也并不需要全部学习,常用的就那几个

-U

使用usb线连接

frida -U

-f

指令app包名

-p

使用app的pid

-l

加载 hook脚本

-o

把脚本输出的信息保存到文件中

frida两种操作模式

cli命令行,javascript脚本注入进程

rpc,Python进行javascript脚本注入

frida两种操作app的方式

spwan模式,不管app运不运行它都会重启,然后注入,它的注入比较早,就是可以拦截app启动时执行的代码

attach模式,给一个正在运行的app进行注入,也就是说只有app运行了它才能进行注入,它比较晚,app启动时的代码没办法拦截(运行之后才注入怎么可能拦截启动时的代码)

到底是用spwan模式还是attach模式,-f指定包名 使用spwan模式,加了-f就会使用spwan模式,加-F使用attach模式

frida脚本都是使用JavaScript语言编写,它有个固定格式

Java.perform(function () {});

首先启动一下手机里的 frida-server

attach模式注入脚本 frida -UF -l .\FridaHook初体验.js

Java.perform(function () {// 获取当前应用的上下文var currentApplication = Java.use('android.app.ActivityThread').currentApplication();var context = currentApplication.getApplicationContext();// 获取包名var packageName = context.getPackageName();// 输出包名console.log("当前应用的包名是: " + packageName);send(packageName)
});

直接写exit然后按回车键(Enter键)退出hook

使用Python启动脚本

核心是通过 frida.get_usb_device()获取frida功能

然后使用device.get_process("com.xxx.frodo").pid 获取app进程id

然后写JavaScript的hook脚本

js_cpde = '''
Java.perform(function () {// 获取当前应用的上下文var currentApplication = Java.use('android.app.ActivityThread').currentApplication();var context = currentApplication.getApplicationContext();// 获取包名var packageName = context.getPackageName();// 输出包名console.log("当前应用的包名是: " + packageName);
});
'''

然后使用 session.create_script(js_cpde) 加载脚本

然后使用 script.load() 把脚本注入到app中并执行脚本

spwan模式

指令 frida -Uf com.XXX.frodo -l .\FridaHook初体验.js

执行了上面的指令后会卡主,然后输入 %resume让app继续运行

Python使用spwan模式,,主要修改了下图红框的两行代码

# -*- coding: utf-8 -*-
import frida
import sysdef on_message(message, data):print("message", message)print("data", data)# 通过Spawn模式启动一个新的应用程序进程,并在该进程中加载Frida脚本
device = frida.get_usb_device()pid = device.spawn(["com.trs.xxxx.xxx"])
# 恢复应用程序的执行
device.resume(pid)session = device.attach(pid)js_cpde = '''
Java.perform(function () {// 获取当前应用的上下文var currentApplication = Java.use('android.app.ActivityThread').currentApplication();var context = currentApplication.getApplicationContext();// 获取包名var packageName = context.getPackageName();// 输出包名console.log("当前应用的包名是: " + packageName);send(packageName)
});
'''script = session.create_script(js_cpde)
# 设置监听
script.on("message", on_message)
script.load()
# 阻塞主线程,以保持脚本运行
sys.stdin.read()

还有如下图红框

使用 script.on("message", on_message)设置监听message消息,然后通过 send(packageName)的send函数触发on_message函数,这样就可以在Python代码中获取JavaScript里的数据

frida远程模式,一般不使用,它有点麻烦

首先使用把刚刚启动的frida-server按CTRL+C进行退出,然后使用 ./frida-server-14.2.18-android-arm64 -l 0.0.0.0:8881指定frida-server的端口为8881启动

然后使用 adb forward tcp:8881 tcp:8881 指令映射端口(或者理解为开启端口)

然后这时的客户端指令,不是-U使用-H了,别的没变化

Python使用frida的远程模式

# -*- coding: utf-8 -*-import frida, sysjsCode = """
Java.perform(function () {// 获取当前应用的上下文var currentApplication = Java.use('android.app.ActivityThread').currentApplication();var context = currentApplication.getApplicationContext();// 获取包名var packageName = context.getPackageName();// 输出包名console.log("当前应用的包名是: " + packageName);
});
"""def message(message, data):if message['type'] == 'send':print(f"[*] {message['payload']}")else:print(message)# 远程连接服务端
device = frida.get_device_manager().add_remote_device('127.0.0.1:8881')
# 附着到已运行的应用
process = device.attach('com.trs.xxx.newsclient')
script = process.create_script(jsCode)
script.on("message",message)
script.load()

img

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

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

相关文章

LLM-MPC混合架构:车载大语言模型用来增强自动驾驶系统

1. 概述 2025年,苏黎世研究团队在RSS2025会议上正式提出「LLM-MPC混合架构」,标志着大语言模型(LLM)在自动驾驶系统中的实用化迈出关键一步。该方案旨在解决传统深度学习模型在极端交通场景中泛化能力不足的问题。通过在车载终端…

解释k8s种ConfigMap和Secret的作用,如何在Pod中挂载环境变

一、ConfigMap & Secret 核心定位 属于Kubernetes的配置管理特性,用于解耦应用与配置 1. ConfigMap 作用:存储非敏感配置数据 存储内容: 环境变量命令行参数配置文件(如JSON/XML/YAML)系统参数(如J…

Android --- ObjectAnimator 和 TranslateAnimation有什么区别

文章目录 2. 作用范围和功能2. 动画表现3. 是否修改 View 的属性4. 适用场景5. 性能总结: ObjectAnimator 和 TranslateAnimation 都是 Android 中常用的动画类型,但它们有以下几个关键的区别: 2. 作用范围和功能 ObjectAnimator&#xff1a…

3d GIS数据来源与编辑工具

1、卫星遥感 2、航空摄影测量 3、地面实测技术 全站仪 3维扫描 3D GIS数据制作全流程详解 一、数据采集:多源数据获取 3D GIS数据的制作需从多维度采集地理空间信息,以下是主要采集方式及适用场景: (一)遥感与航测…

实验设计与分析(第6版,Montgomery)第4章随机化区组,拉丁方, 及有关设计4.5节思考题4.26~4.27 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第章随机化区组&#xff0c;拉丁方&#xff0c; 及有关设计4.5节思考题4.26~4.27 R语言解题。主要涉及方差分析&#xff0c;正交拉丁方。 batch <- c(rep("batch1",5), rep(…

linux创建虚拟网卡和配置多ip

1.展示当前网卡信息列表&#xff1a; linux上&#xff1a; ip a ifconfigwindows上&#xff1a; ipconfig 2.创建虚拟网卡对&#xff1a; sudo ip link add name veth0 type veth peer name veth1 在 ip link add 命令中&#xff0c;type 参数可以指定多种虚拟网络设备类型&…

分布式项目保证消息幂等性的常见策略

Hello&#xff0c;大家好&#xff0c;我是灰小猿&#xff01; 在分布式系统中&#xff0c;由于各个服务之间独立部署&#xff0c;各个服务之间依靠远程调用完成通信&#xff0c;再加上面对用户重复点击时的重复请求等情况&#xff0c;所以如何保证消息消费的幂等性是在分布式或…

微信小程序(uniapp)对接腾讯云IM

UniApp 对接腾讯云 IM&#xff08;即时通讯&#xff09;完整指南 一、项目背景与需求分析 随着社交场景的普及&#xff0c;即时通讯功能已成为移动应用的标配。腾讯云 IM&#xff08;Tencent IM&#xff0c;即 TIM&#xff09;提供稳定可靠的即时通讯服务&#xff0c;支持单聊…

Portainer安装指南:多节点监控的docker管理面板-家庭云计算专家

背景 Portainer 是一个轻量级且功能强大的容器管理面板&#xff0c;专为 Docker 和 Kubernetes 环境设计。它通过直观的 Web 界面简化了容器的部署、管理和监控&#xff0c;即使是非技术用户也能轻松上手。Portainer 支持多节点管理&#xff0c;允许用户从一个中央控制台管理多…

[Redis] Redis命令在Pycharm中的使用

初次学习&#xff0c;如有错误还请指正 目录 String命令 Hash命令 List命令 set命令 SortedSet命令 连接pycharm的过程见&#xff1a;[Redis] 在Linux中安装Redis并连接桌面客户端或Pycharm-CSDN博客 redis命令的使用见&#xff1a;[Redis] Redis命令&#xff08;1&#xf…

计算机网络:物理层

目录 一、物理层的基本概念 二、物理层下面的传输媒体 2.1 导引型传输媒体 2.1.1 同轴电缆 2.1.2 双绞线 2.1.3 光纤 2.1.4 电力线 2.2 非导引型传输媒体 2.2.1 无线电波 2.2.2 微波 2.2.3 红外线 2.2.4 可见光 三、传输方式 3.1 串行与并行 3.2 同步与异步 3.…

构建系统maven

1 前言 说真的&#xff0c;我是真的不想看构建了&#xff0c;因为真的太多了。又多又乱。Maven、Gradle、Make、CMake、Meson、Ninja&#xff0c;Android BP。。。感觉学不完&#xff0c;根本学不完。。。 但是没办法最近又要用一下Maven&#xff0c;所以咬着牙再简单整理一下…

UE5蓝图暴露变量,在游戏运行时修改变量实时变化、看向目标跟随目标Find Look at Rotation、修改玩家自身弹簧臂

UE5蓝图中暴露变量&#xff0c;类似Unity中public一个变量&#xff0c;在游戏运行时修改变量实时变化 1&#xff0c;添加变量 2&#xff0c;设置变量的值 3&#xff0c;点开小眼睛&#xff0c;此变量显示在编辑器中&#xff0c;可以运行时修改 看向目标跟随目标Find Look at R…

proteus美观与偏好设置

本文主要讲&#xff1a; 1 快捷键修改&#xff08;复制&#xff0c;粘贴&#xff0c;原件旋转&#xff09; 2 背景颜色替换 3 模块分区 一 快捷键的设置 设置复制粘贴和旋转三个 这里只是强调一下要分配 二 背景颜色 原来的背景颜色&#xff1a; 之后的背景颜色&#xff1a;…

Arm处理器调试采用jlink硬件调试器的命令使用大全

arm处理器分为cortex-a&#xff0c;cortex-r&#xff0c;cortex-m等3个内核系列&#xff0c;其中m系列一般是单片机&#xff0c;例如stm32等&#xff0c;工控用得挺多。a系列一般是消费娱乐产品等使用较多&#xff0c;例如手机处理器。r系列是高端实时类型处理器&#xff0c;价…

如何将图像插入 PDF:最佳工具比较

无论您是编辑营销材料、写报告还是改写原来的PDF文件&#xff0c;将图像插入 PDF 都至关重要。幸运的是&#xff0c;有多种在线和离线工具可以简化此任务。在本文中&#xff0c;我们将比较一些常用的 PDF 添加图像工具&#xff0c;并根据您的使用场景推荐最佳解决方案&#xff…

4、获取树莓派温度

打开终端&#xff0c;使用指令查看CPU温度&#xff0c;依次输入以下指令&#xff1a; 1.进入操作目录 cd /sys/class/thermal/thermal_zone0 2.查看温度 cat temp 树莓派的返回值 51540 返回值除以1000为当前CPU温度值。即当前温度为51摄氏度。

Leetcode 269. 火星词典

1.题目基本信息 1.1.题目描述 现有一种使用英语字母的外星文语言&#xff0c;这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words &#xff0c;作为这门语言的词典&#xff0c;words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 请你根据该词典还原出此…

使用vscode进行c/c++开发的时候,输出报错乱码、cpp文件本身乱码的问题解决

使用vscode进行c/c开发的时候&#xff0c;输出报错乱码、cpp文件本身乱码的问题解决 问题描述解决方案问题1的解决方案问题2解决方案 问题描述 本篇文章解决两个问题&#xff1a; 1.当cpp文件出现错误的时候&#xff0c;编译时报错&#xff0c;但是报错内容缺是乱码&#xff0…

现代数据湖架构全景解析:存储、表格式、计算引擎与元数据服务的协同生态

本文全面剖析现代数据湖架构的核心组件,深入探讨对象存储(OSS/S3)、表格式(Iceberg/Hudi/Delta Lake)、计算引擎(Spark/Flink/Presto)及元数据服务(HMS/Amoro)的协作关系,并提供企业级选型指南。 一、数据湖架构演进与核心价值 数据湖架构演进历程 现代数据湖核心价…