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,一经查实,立即删除!

相关文章

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

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

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…

正点原子[第二期]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-带宽

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

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等语言,被广泛…

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…

[微信小程序] 入门笔记2-自定义一个显示组件

[微信小程序] 入门笔记2-自定义一个显示组件 0. 准备工程 新建一个工程,删除清空app的内容和其余文件夹.然后自己新建pages和components创建1个空组件和1个空页面. 设定 view 组件的默认样式,使其自动居中靠上,符合习惯.在app.wxss内定义,作用做个工程. /**app.wxss**/ /* 所…

【强训笔记】day18

NO.1 思路&#xff1a;双指针模拟。to_string将数字转化为字符。 代码实现&#xff1a; class Solution { public:string compressString(string param) {int left0,right0,nparam.size();string ret;while(right<n){while(right1<n&&param[right]param[right…

“幽灵“再临!新型攻击瞄准英特尔CPU;微软Outlook漏洞被俄利用,网络间谍攻击捷克德国实体 | 安全周报0510

1. 微软Outlook漏洞被俄罗斯APT28利用&#xff0c;捷克德国实体遭网络间谍攻击&#xff01; 捷克和德国于周五透露&#xff0c;他们成为与俄罗斯有关的APT28组织进行的长期网络间谍活动的目标&#xff0c;此举遭到欧洲联盟&#xff08;E.U.&#xff09;、北大西洋公约组织&…

【C++】CentOS环境搭建-快速升级G++版本

【C】CentOS环境搭建-快速升级G版本 1. 安装CentOS的软件集仓库&#xff1a;2. 安装你想要的devtoolset版本&#xff0c;例如devtoolset-9&#xff1a;3. 启用新版本的编译器&#xff1a;4. 检查G版本&#xff1a; 在CentOS系统中升级G编译器通常涉及使用devtoolset或者SCL&…

Ubuntu搭建VsCode C++ 开发环境

Ubuntu搭建VsCode C 开发环境 安装VS Code 使用命令来安装VS Code&#xff1a;他会下载vscode的最新版本。 sudo snap install --classic code如果不使用命令 的方式 在官网下载vscode安装包&#xff08; 后缀为 .deb的包 &#xff09;之后&#xff08;可以选择版本 &#x…

Selenium定位方法汇总及举例

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Bpmn.js使用(仅查看版)

Bpmn.js使用&#xff08;仅查看版&#xff09; 下载 npm install bpmn-js创建一个 Dom 节点来挂载画布元素。 <a-tabs v-model:activeKey"activeKey" change"tabsChange"><a-tab-pane key"1" tab"审批记录"><a-tabl…