当前位置: 首页 > ds >正文

12.安卓逆向2-frida hook技术-HookJava重载方法

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

内容参考于:图灵Python学院

工具下载:

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

提取码:zy89

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

上一个内容:11.安卓逆向2-frida hook技术-HookJava静态方法和实例方法

hook重载方法,下图方法名一样,入参不一样

怎么hook?首先写下方的代码,进行hook

Java.perform(function () {var Utils = Java.use('com.luoge.com.Utils');Utils.getOver.implementation = function () {var res = this.getOver();console.log('hook getOver()成功', res);return res;}
})

如下图然后会报错

.overload() .overload('int') .overload('com.luoge.com.Money')

报错信息中的这三个就是用来hook重载的

.overload()表示hook无参的getOver方法

.overload('int')表示hook有参的getOver(int i)方法

.overload('com.luoge.com.Money')表示hook有参的getOver(Money money)方法

hook无参的

Java.perform(function () {var Utils = Java.use('com.luoge.com.Utils');Utils.getOver.overload().implementation = function () {var res = this.getOver();console.log('hook getOver()成功', res);return res;}
})

hook有参getOver(int i)方法

Java.perform(function () {var Utils = Java.use('com.luoge.com.Utils');Utils.getOver.overload('int').implementation = function (i) {console.log('hook getOver(int i)入参 ', i);var res = this.getOver(i);console.log('hook getOver(int i)返回值', res);return res;}
})

hook有参getOver(Money money)

Java.perform(function () {var Utils = Java.use('com.luoge.com.Utils');Utils.getOver.overload('com.luoge.com.Money').implementation = function (i) {console.log('hook getOver(Money money)入参 ', i);var res = this.getOver(i);console.log('hook getOver(Money money)返回值', res);return res;}
})

java常用参数对应的Frida参数

一次hook所有重载方法

Java.perform(function () {var targetClass = Java.use('com.luoge.com.Utils');// 使用 overloads 函数获取所有重载方法var methods = targetClass['getOver'].overloads;console.log(methods)console.log(methods.length,'多少个重载方法')// 遍历所有的重载方法并进行钩子for (var i = 0; i < methods.length; i++) {(function(method) {method.implementation = function () {// console.log('方法被调用:', method);for (var j = 0; j < arguments.length; j++) {console.log('参数' + j + ':', arguments[j]);}// 调用原始方法var ret = method.apply(this, arguments);console.log('返回值:', ret);return ret;};})(methods[i]);}
})


img

http://www.xdnf.cn/news/13757.html

相关文章:

  • element-MessageBox 弹框组件 调整按钮位置(确认在左,取消在右)、删除场景回车调取消事件,默认调确认事件
  • 串口通信入门基础
  • 【Linux】Makefile基础
  • Halcon深度图转换(real、uint2、byte)
  • 基本多线程编译make命令
  • 达梦数据库raw绑定磁盘-DSC集群部署
  • 再说一说LangChain Runnable接口
  • 禁止虚拟机里的Win10的Windows Defender
  • 【热更新知识】学习一 Lua语法学习
  • 【学习笔记】计算机操作系统(六)—— 输入输出系统
  • 基于 Spring AI 的 MCP 客户端/服务端实现
  • Java中的设计模式:23种经典模式在实际项目中的应用案例
  • 一款包含150个APP移动端网站UI的psd适用于服装鞋类社交电商项目
  • 论文略读:Mixture-of-Agents Enhances Large Language Model Capabilities
  • 力扣HOT100之贪心算法:55. 跳跃游戏
  • 如何在 Docusign 批量发送信封?
  • Cesium 常见方法汇总
  • Qwen家族系列模型概述
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十四)
  • 用python判断一串字符是否属于中文的6种方法
  • 3 Studying《深入理解Android卷(邓凡平)》1
  • 【kafka】消息模型与工作原理详解
  • 如何抓取DP_AUX辅助通道数据
  • 在代码中使用uView里calendar中的Slot, tooltip 插槽
  • SQL 注入(SQL Injection)
  • UE5 学习系类(七)导入bridge资产包
  • CodeForces 228D. Zigzag
  • Master PDF Editor:全能PDF编辑工具
  • ElasticSearch聚合查询从15秒到1.2秒的深度优化实践
  • MySQL表的增删改查(基础)