app逆向-frida安装调试

news2024/11/15 15:42:57

文章目录

    • 一、前言
    • 二、安装
    • 三、hook调试,hook java类

一、前言

frida是一款基于python + javascript 的hook框架,可运行在android ios linux winosx等各平台,主要使用动态二进制插桩技术

官方网站:https://frida.re/docs/home/
api地址:https://frida.re/docs/javascript-api/

二、安装

需要准备的

  • 一台root好的安卓手机
  • frida-server:运行在手机上,安卓6使用frida-server-12.8.10,安卓8以上新版本
  • frida-tools:python模块 提供cli工具命令跟frida-server交互pip install frida-tools
  • frida:python模块 pip install frida

frida配置
下载地址:https://github.com/frida/frida/releases,需要查看手机架构下载对应的frida-server安装包

查看手机架构命令如下

adb shell getprop ro.product.cpu.abi

效果
在这里插入图片描述
对应的frida-server
在这里插入图片描述
下载好后frida-server解压push到手机,增加执行权限并且运行起来

adb push frida-server /data/local/tmp/
adb shell
su
cd /data/local/tmp
## 确定手机当前目录是root权限
chmod 777 frida-server
./frida-server&

检测frida是否运行成功

frida-ps -U

如果连接不上可以尝试端口转发到电脑

adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042

三、hook调试,hook java类

app已经启动了,访问成员变量,固定写法如下:

jscode = '''
	Java.perform(
		function(){
			console.log('hook住了')
			var MainActivity = Java.use('类名')
			MainActivity.onClick.implementation = function(参数){
				# 执行原有逻辑
				this.onClick(v)
				# 实现自己的逻辑
				console.log('打印' + this.m.value)
			}
		}
	)
'''
# app已经启动了
process = frida.get_usb_device(-1).attach('这里写软件的包名/进程名')
script = process.create_script(jscode)
script.on('message', on_message)
print('[*] Hook Start Running')
script.load()
# 守护进程
sys.stdin.read()

app启动阶段,访问成员变量,固定写法如下:

jscode = '''
	Java.perform(
		function(){
			console.log('hook住了')
			var MainActivity = Java.use('类名')
			MainActivity.onClick.implementation = function(参数){
				# 执行原有逻辑
				this.onClick(v)
				# 实现自己的逻辑
				console.log('打印' + this.m.value)
			}
		}
	)
'''
# app启动阶段
device = frida.get_usb_device(-1)
pid = device.spawn(["这里写软件的包名/进程名"])
process = device.attach(pid)
script = process.create_script(jscode)
script.on('message', on_message)
print('[*] Hook Start Running')
script.load()
device.resume(pid)
sys.stdin.read()

匿名类,内部类访问外部类,固定写法如下:

jscode = '''
	Java.perform(
		function(){
			console.log('hook住了')
			# 匿名类 类名$xxx
			var MainActivity = Java.use('类名$xxx')
			MainActivity.onClick.implementation = function(参数){
				# 内部类访问外部类
				console.log(this.this$0.value.m.value)
				# 执行原有逻辑
				this.onClick(v)
				# 实现自己的逻辑
				console.log('打印' + this.m.value)
			}
		}
	)
'''
# app已经启动了
process = frida.get_usb_device(-1).attach('这里写软件的包名/进程名')
script = process.create_script(jscode)
script.on('message', on_message)
print('[*] Hook Start Running')
script.load()
# 守护进程
sys.stdin.read()

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

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

相关文章

【深度学习】初识深度学习

初识深度学习 什么是深度学习 关系: #mermaid-svg-7QyNQ1BBaD6vmMVi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7QyNQ1BBaD6vmMVi .error-icon{fill:#552222;}#mermaid-svg-7QyNQ1BBaD6vmMVi .err…

探索Gin框架:快速构建高性能的Golang Web应用

前言 Gin框架是一个轻量级的Web框架,基于Go语言开发,旨在提供高性能和简洁的API。它具有快速的路由和中间件支持,使得构建Web应用变得更加简单和高效。无论是构建小型的API服务还是大型的Web应用,Gin框架都能够满足你的需求。 无论…

开源免费无广告Gopeed,现代化的高速下载器,支持(HTTP、BitTorrent、Magnet)等多种协议下载,开源免费、无广告、高度可定制、不限速。

目录 特点 支持的平台 一键部署 体验 特点 全平台支持、开源免费,不限速、无广告 遵循 GPL-3.0 开源协议 支持(HTTP、BitTorrent、Magnet)协议下载 高速下载,底层使用golang协程并发下载 每日自动更新 tracker 列表 去中心…

element-ui 树形控件 通过点击某个节点,遍历获取上级的所有父节点和本身节点

1、需求&#xff1a;点击树形控件的某个节点&#xff0c;需要拿到它上级的所有父节点进行操作 2、代码&#xff1a; 树形控件代码 <el-tree:data"deptOptions"node-click"getVisitCheckedNodes"ref"target_tree_Speech"node-key"id&qu…

Jenkins上跑自动化项目,case出现错误时,导致项目运行时间过长,该如何处理?

1、方案一&#xff1a;Jenkins上调整 进入配置&#xff1a; 构建环境&#xff1a; 自行选择超时时间即可&#xff5e; 2、方案二&#xff1a;代码调整【python】 安装插件&#xff1a;pytest-timeout 选择一&#xff1a;装饰器用法&#xff1a;将单个测试用例标记为超时&…

IDEA自带数据库导入SQL文件

右键数据库 - > 点击SQL Scripts -> run SQL Scripts 就可以选择对应的文件了

Zookeeper架构系列——集群模式

背景 架构图 集群模式详解 客户端连接到单个ZooKeeper服务器。客户端维护一个TCP连接&#xff0c;通过该连接发送请求、获取响应、获取监视事件和发送检测信号。如果与服务器的TCP连接中断&#xff0c;客户端将连接到其他服务器。 订购了ZooKeeper。ZooKeeper在每次更新时都…

Kotlin for loop: in、 until、 step、 downTo

Kotlin for loop: in、 until、 step、 downTo fun loop1() {for (i in 0..5) {print("$i ")}println("\n1-end\n") }fun loop2() {for (i in 0 until 5) {print("$i ")}println("\n2-end\n") }fun loop3() {for (i in 0 until (5)) {…

Spring依赖注入之setter注入与构造器注入以及applicationContext.xml配置文件特殊值处理

依赖注入之setter注入 在管理bean对象的组件的时候同时给他赋值&#xff0c;就是setter注入&#xff0c;通过setter注入&#xff0c;可以将某些依赖项标记为可选的&#xff0c;因为它们不是在构造对象时立即需要的。这种方式可以减少构造函数的参数数量&#xff0c;使得类的构…

Django、Flask 与 Javascirpt 之间传值与数据转换

常见问题&#xff1a;JavaScript 如何处理Django、Flask传递的数据库数据 Django 、Flask从数据库读出的数据通常保存为&#xff1a;对象列表、字典列表&#xff0c;或 tuple列表形式 # 用object_list 对象列表表示数据库记录 [<Article: id1,title星际穿越影评,body作为一…

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目&#xff01;今天和大家分享一下&#xff0c;如何使用IntelliJ IDEA里面的maven插件&#xff0c;来快速搭建一个简单的Springboot基础项目。 第一步&#xff0c;菜单里面找到&#xff0c;文件-》新建-项目。如图。我们勾选了是…

Dify学习笔记-应用发布(四)

1、发布为公开 Web 站点 使用 Dify 创建 AI 应用的一个好处在于&#xff0c;你可以在几分钟内就发布一个可供用户使用的 Web 应用&#xff0c;该应用将根据你的 Prompt 编排工作。 如果你使用的是自部署的开源版&#xff0c;该应用将运行在你的服务器上 如果你使用的是云服务&…

java复习篇 数据结构:链表第一节

目录 单向链表 初始 头插 思路 情况一 情况二 代码 尾插 思路 遍历 优化遍历 遍历验证头插 尾插代码 优化 尾插测试 get 思路 代码 测试 insert 思路 代码 优化 测试 remove 移除头结点 提问 移除指定位置 测试 单向链表 每个元素只知道自己的下一个…

大模型相关学习资料整理【长久更新】

笔者学习和收集大模型相关资料&#xff0c;只收集&#xff1a;官方 OR 易懂 OR 全面。 且后续我会针对大模型的名词和新机制做专门易懂的博客讲解&#xff0c;可以点个关注。等待后续更新。 目前整理资料如下&#xff1a; 1. 核心应用开发框架 1. semantic-kernel【微软】 …

DocsOpenApi自动化校验

一、背景 生产环境的文档中心的OpenApi和Kong服务配置的OpenApi可能存在不一致的情况&#xff0c;比如生产环境的文档中心有某个OpenApi&#xff0c;但是Kong服务没有配置到&#xff0c;那客户使用就会有问题。所以&#xff0c;前段时间&#xff08;M09版本&#xff09;花了4个…

2017年认证杯SPSSPRO杯数学建模C题(第二阶段)移动端考研产品的春天真的到来了吗全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 C题 移动端考研产品的春天真的到来了吗 原题再现&#xff1a; 2017 年的全国硕士研究生招生考试共有 201 万人报名参加&#xff0c;比去年增加了 24 万名考生&#xff0c;增加 13.56%。看起来新一轮的考研热潮即将到来&#xff0c;而考研教学和…

Springboot+vue的科研工作量管理系统的设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的科研工作量管理系统的设计与实现&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的科研工作量管理系统的设计与实现…

【RT-DETR有效改进】FasterNet一种跑起来的主干网络( 提高FPS和检测效率)

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

WhatsApp怎么营销引流?

随着移动互联网的普及&#xff0c;越来越多的企业开始利用社交媒体平台来进行推广和营销。其中&#xff0c;全球最流行的即时通讯软件之一 WhatsApp&#xff0c;为企业提供了一个新的营销渠道。但是&#xff0c;许多企业不知道如何利用 WhatsApp 进行营销引流。今天&#xff0c…

scrapy框架核心知识Spider,Middleware,Item Pipeline,scrapy项目创建与启动,Scrapy-redis与分布式

scrapy项目创建与启动 创建项目 在你的工作目录下直接使用命令: scrapy startproject scrapytutorial运行后创建了一个名为scrapytutorial的爬虫工程 创建spider 在爬虫工程文件内&#xff0c;运行以下命令&#xff1a; scrapy genspider quotes创建了名为quotes的爬虫 …