frida hook java

代码例子

原函数:

在这里插入图片描述

hook函数:


if(Java.available){Java.perform(function(){var a = Java.use("com.sankuai.waimai.foundation.utils.security.a");a.a.overload("java.lang.String","java.lang.String","long","int").implementation=function(str1,str2,long1,int1){var result = this.a(str1,str2,long1,int1);      send("string1:" + str1 + ",string2:" + str2 + ",long1:" + long1 +",int1:" + int1 +  ",result: " + result);return result;}var pp = Java.use("com.meituan.robust.PatchProxy");pp.isSupport.overload("[Ljava.lang.Object;","java.lang.Object","com.meituan.robust.ChangeQuickRedirect","int").implementation=function(objs1,obj1,cr,int1){var result = this.isSupport(objs1,obj1,cr,int1);      if(result ){send("PatchProxy result: " + result);}return result;}});
}

还有一种方式:


function jsfunc(){if(Java.available){Java.perform(function(){var a = Java.use("com.sankuai.waimai.foundation.utils.security.a");a.a.overload("java.lang.String","java.lang.String","long","int").implementation=function(str1,str2,long1,int1){var result = this.a(str1,str2,long1,int1);      send("string1:" + str1 + ",string2:" + str2 + ",long1:" + long1 +",int1:" + int1 +  ",result: " + result);return result;}var pp = Java.use("com.meituan.robust.PatchProxy");pp.isSupport.overload("[Ljava.lang.Object;","java.lang.Object","com.meituan.robust.ChangeQuickRedirect","int").implementation=function(objs1,obj1,cr,int1){var result = this.isSupport(objs1,obj1,cr,int1);      if(result ){send("PatchProxy result: " + result);}return result;}});}
}
setImmediate(jsfunc);

js代码解释:

Java.use:返回类实例。
s.a.overload: 重载a方法。当然,如果确定目标函数没有重载,可以去掉".overload(param)",如果不确定,为了保险起见,可以无脑使用此参数。
this.a:调用原来的a函数。
Java.available:这个字段标记Java虚拟机( Dalvik 或者 ART)是否已加载, 操作Java任何东西之前,要确认这个值是否为true。
Java.perform(fn):在Javascript代码成功被附加到目标进程时调用。

hook执行后输出:
在这里插入图片描述

变量类型:

基本类型缩写
intI
longJ
booleabZ
byteB
charC
floatF
doubleD
shortS
Stringjava.lang.String
Objectjava.lang.Object

需要注意的是:
使用数组时才会使用缩写。如果数组类型是java.lang.String 或者java.lang.Object,需要在前面加"L",后面加";"
比如上例中的"[Ljava.lang.Object;"

使用步骤

列出android手机上的进程:

ps -A 

或者:

frida-ps -U

启动frida-server:

 ./frida-server-x86-64

注入代码:

frida -U -f com.sankuai.meituan.takeoutnew -l d:\adbtest\mt_mtgsig.js -no-pause

按爪ctrl + c后,输入exit推出frida:

在这里插入图片描述

参考链接

  1. https://www.cnblogs.com/luoyesiqiu/p/10718997.html
  2. https://blog.csdn.net/freeking101/article/details/112634649

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

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

相关文章

Angular进阶:深入理解RxJS在Angular应用中的高效运用

RxJS(Reactive Extensions for JavaScript)是JavaScript的一个响应式编程库,特别适用于处理异步数据流。 在Angular应用中,RxJS的高效运用主要体现在: 异步操作处理 RxJS的核心优势在于处理异步操作,如H…

【论文合集1】- 存内计算加速机器学习

本章节论文合集,存内计算已经成为继冯.诺伊曼传统架构后,对机器学习推理加速的有效解决方案,四篇论文从存内计算用于机器学习,模拟存内计算,对CNN/Transformer架构加速角度阐述存内计算。 【1】WWW: What, When, Where…

maven 配置(远程仓库管理)

maven 配置 如何上传至远程仓库单一项目(需配置pom.xml与setting.xml)全局(显式激活) profile (可实现: 单一项目配置、单一用户配置、全局配置)如何使用profile 公司因为jar包管理混乱(本地缺这个缺那个的),因此建了一个私库。但是仍然很混乱,因为maven…

Java自定义注解:从定义到解析,再到AOP切面与日志打印应用

目录 一、注解定义二、注解解析三、自定义注解结合AOP切面四、自定义注解用于日志打印五、区别总结六、应用场景总结 在Java开发中,注解是一种强大的元编程工具,它可以帮助我们提升代码的可读性和功能性。本文将深入探讨如何创建和使用自定义注解&#x…

Java JVM 浅析

为什么要有JVMJVM是什么?JVM的工作流程和组成部分JVM规范和JVM实现JVM原理详解 带着以上问题,我将尝试对JVM作出一些简单的介绍。 一、JVM 简介 在90年代初,软件开发面临一个大问题,即不同的操作系统和硬件架构要求开发不同的版本…

Acrobat Pro DC 2023 for Mac:PDF处理的终极解决方案

Acrobat Pro DC 2023 for Mac为Mac用户提供了PDF处理的终极解决方案。它具备强大的文档处理能力,无论是查看、编辑还是创建PDF文件,都能轻松胜任。在编辑功能方面,Acrobat Pro DC 2023支持对文本、图像进行精准的修改和调整,还能添…

从RAID 0到RAID 10:全面解析RAID技术与应用

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、磁盘阵列简介 2、磁盘阵列诞生背景 3、硬件RA…

联邦学习框架VeryFL

一、介绍 VeryFL(Variable-Fidelity Learning)是一种联邦学习框架。联邦学习是一种分布式机器学习方法,其中许多参与者(例如移动设备或边缘设备)共同训练一个全局模型,而不需要将他们的数据上传到中央服务器。与传统的集中式方法相比,联邦学习具有更高的隐私性和安全性…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-14-主频和时钟配置

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

MPAndroidChart 详细使用 - BarChart

chart下面的方法 getDescription().setEnabled(boolean enabled);//设置描述是否显示 setPinchZoom(boolean enabled);//设置x轴和y轴能否同时缩放。默认是否 setScaleEnabled(boolean enabled);//是否支持缩放 setScaleXEnabled(boolean enabled);//启用/禁用x轴上的缩放 setS…

示波器基础1-带宽

数字示波器最重要的基本特征之一是其带宽,了解带宽及其对技术指标的影响对于选择合适的示波器非常有帮助。 这里我们对示波器带宽的一些基本方面做一简要介绍。 当我们谈到示波器的带宽时,重要的是要区分模拟带宽和数字带宽。模拟带宽主要受仪器模拟输入…

【AIGC调研系列】基于人工智能的测试用例生成工具QAMete

百度测试平台QAMate是一个基于人工智能的测试用例生成工具。该平台利用文心大模型,支持从需求文本、表格及整份需求文档中自动生成测试用例[1][6][7]。此外,QAMate还允许用户构建专属的Prompt和业务经验知识库,以定向提升生成效果[1][6][7]。…

Vue本地储存与自定义事件

一.本地存储 浏览器通过window.sessionStorage和window.loaclStorage实现本地存储,存储大小一般支持5MB左右(不同浏览器大小不同) 相关api 1.xxxxxStorage.setItem(key, value) 接受一个键和值作为参数,将键值对添加到储存中…

ppocrV4自带的标注软件的坑

1.默认读图方式是cv2.imread(),不支持中文路径,所以标注的文件夹最好不要有中中文 2.多边形标注方式有bug,标完之后导出识别结果为空。比如下面这张图,多边形标注完之后,再导出识别结果,在crop_img文件夹里面却没有。…

C# WinForm —— 14 CheckedListBox 复选列表框介绍

1. 简介 类似 ListBox,提供项的列表,区别就是 CheckedListBox 每一个项前面有个复选框 2. 常用属性 属性解释(Name)控件ID,在代码里引用的时候会用到,一般以 ckl 开头BackColor背景颜色BoderStyle边框样式:无、FixedSingle、F…

uni-appH5Android混合开发三 || uni-app调用Android原生方法的三种方式

前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式。 uni-app跨平台框架介绍和快速入门 uni-app跨平台框架介绍和快速入门 一、H5方法调用android原生方法 H5 Android开发规范官方文档&#…

EDA(六)Modelsim

EDA(六)Modelsim ModelSim是一款由Mentor Graphics公司(现为Siemens EDA的一部分)开发的高性能、交互式和可扩展的HDL(硬件描述语言)仿真工具。它支持Verilog、SystemVerilog和VHDL等语言,被广泛…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷2(容器云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…

Java入门基础学习笔记10——变量

变量的学习路径: 认识变量->为什么要用变量?->变量有啥特点?->变量有啥应用场景? 什么是变量? 变量是用来记住程序要处理的数据的。 变量的定义格式: 数据类型 变量名称 数据; 数…

Android之给Button上添加按压效果

一、配置stateListAnimator参数实现按压效果 1、按钮控件 <Buttonandroid:id"id/mBtnLogin"android:layout_width"match_parent"android:layout_height"48dp"android:background"drawable/shape_jfrb_login_button"android:state…