首页 > 其他分享 >day08 8.4 Hook重载方法补充

day08 8.4 Hook重载方法补充

时间:2023-07-16 15:34:25浏览次数:34  
标签:day08 8.4 script data Hook 重载 message 方法 hook

【一】什么是重载

名字一样,但是参数不一样

【1】重载介绍

  • 在Java中,重载(Overloading)指的是在同一个类中可以定义多个方法(函数)具有相同的名称,但参数列表不同的情况。

  • 换句话说,重载允许在同一个类中使用相同的方法名执行不同的操作,提供了更多的灵活性。

【2】重载的规则如下:

  1. 方法名称必须相同。
  2. 参数列表必须不同,要么是参数的数量不同,要么是参数类型不同,或者两者都不同。
  3. 返回类型可以相同也可以不同,但不能仅仅基于返回类型来进行重载方法的区分。
  4. 重载的方法可以有不同的访问修饰符。
  5. 重载的方法可以抛出不同的异常。

【3】重载方法的执行

当程序调用一个被重载的方法时,编译器会根据传递的参数选择合适的方法执行。选择过程会按照以下规则进行:

  1. 如果能够精确匹配到参数数量和类型完全一致的方法,则选择该方法。
  2. 如果没有找到精确匹配的方法,编译器会自动进行类型转换来寻找最佳匹配的方法。类型转换的优先级为:小范围类型向大范围类型转换;自动装箱与拆箱;子类向父类类型转换。
  3. 如果有多个方法都可以匹配到,但没有一个方法是明显地更具体的,编译器将会报错。

重载的好处在于可以根据方法功能的不同来使用相同的方法名,提高代码可读性和灵活性。但过度使用重载可能会导致代码难以理解和维护,因此需要合理使用。

【二】Hook重载的方法

【1】手机端启动server服务

  • 进入shell命令窗口
adb shell
  • 切换到管理员权限
su
  • 切换到 frida-server 文件位置
cd /data/local/tmp/
./frida-server-16.0.19-android-arm64 
  • 端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

【2】Python Hook代码编写

import frida
import sys

# 连接手机设备
rdev = frida.get_remote_device()

session = rdev.attach("油联合伙人")
# hook的是update这个重载方法,不写overload,会有错误提示,告诉你有几个,你想hook那个,复制过去即可  
scr = """
Java.perform(function () {
    // 包.类
    var MessageDigest = Java.use("java.security.MessageDigest");
    MessageDigest.update.overload('byte').implementation = function(data){
        var res = this.update(data);
        return res;
    }
});
"""
script = session.create_script(scr)

def on_message(message, data):
    print(message, data)

script.on("message", on_message)
script.load()
sys.stdin.read()

【3】Python Hook代码改写

  • 构造方法可能有多个
  • hook构造方法
import frida
import sys

# 连接手机设备
rdev = frida.get_remote_device()

session = rdev.attach("油联合伙人")

scr = """
Java.perform(function () {
    // 包.类   项目中字符串拼接,都会用这个,hook它,很多地方会用到   StringBuilder sb =new StringBuilder()  触发构造方法,就好hook到
    var StringBuilder = Java.use("java.lang.StringBuilder");
    // hook构造方法,固定加入  .$init.overload('int')  
    StringBuilder.$init.overload('int').implementation = function(num){
        console.log(num);
        return res;
    }

});
"""

script = session.create_script(scr)

def on_message(message, data):
    print(message, data)

script.on("message", on_message)
script.load()
sys.stdin.read()

标签:day08,8.4,script,data,Hook,重载,message,方法,hook
From: https://www.cnblogs.com/dream-ze/p/17557910.html

相关文章

  • day08 8.3 安卓开发项目实战
    开发自己的第一款APP-切换图片【1】编写步骤1打开androidStudio,新建一个项目2adnrodistudion中有两种视图android:以后开发,经常看它project:有时候找一些文件,看它,标准文件夹结构3编写代码activity_main.xml:编写xml,安卓页面的布局相当于前端的htmlMainActivity:......
  • webhook
    作用范围kube-apiserver请求处理全流程webhook可以作用于准入。准入控制回调时,MutatingAdmissionWebhook可以修改对象,ValidatingAdmissionWebhook可以拒绝请求。参考资料深入理解KubernetesAdmissionWebhook......
  • vue3 为什么使用 hooks?
    目的为了解决在组件中共享逻辑和状态的问题。 hooks提供了一种更简洁和直观的方式来共享逻辑和状态。vue3中的hooks是基于函数的组件模型,通过在函数组件内部使用特定的hook函数来实现。每个hook函数都有特定的用途,例如:useState用于创建和管理状态,useEffect用于......
  • frida hook overloads
    同时hook多个重载的函数functionhookOverloads(className,func,check_index=0,check_text="",trace=false){vartoHook;Java.perform(()=>{toHook=Java.use(className)[func];varoverloads=toHook.overloads;varoverloadCount=overloads.lengt......
  • Day08(2023.07.13)
    行程8:45    到达上海市信息安全测评认证中心(黄浦区陆家浜路1308号)9:00  学习《网络安全等级测评师培训教材》11:30--13:00   吃饭休息13:00 到达久事公交大厦(徐汇区吴中东路南555号)16:30      下班  系统管理软......
  • frida hook Toast
    //获得Toast组件varToast=Java.use("android.widget.Toast");varmakeText=Toast.makeText;varString=Java.use("java.lang.String");//函数重载,设置参数类型makeText.overload("android.content.Context","java.lang.Cha......
  • Day08(2023.07.12)
    行程8:45    到达上海市信息安全测评认证中心(黄浦区陆家浜路1308号)9:00  学习《网络安全等级测评师培训教材》11:30--13:00   吃饭休息13:00 学习《网络安全等级测评师培训教材》17:00      下班 路由器:堡垒机:如......
  • React中编写操作树形数据的自定义Hook
    什么是Hookhook即为钩子,是一种特殊的函数,它可以让你在函数式组件中使用一些react特性,目前在react中常用的hook有以下几类useState:用于在函数组件中定义和使用状态(state)。useEffect:用于在函数组件中处理副作用,也可以模拟react生命周期useContext:用于在函......
  • frida hook工具使用——用于os api注入分析还是不错的
    准备:pipinstallfridapipinstallfrida-tools 开始:1、创建child-gating1.pyimportosimportthreadingfromfrida_tools.applicationimportReactorimportfridaimportargparseclassApplication:def__init__(self,log_location):self.fpat......
  • 自定义hook函数
    什么是hook?——本质是一个函数,把setup函数中使用的CompositionAPI进行了封装。类似于vue2.x中的mixin。自定义hook的优势:复用代码,让setup中的逻辑更清楚易懂。 创建hook3文件夹新建usePoint.js文件(文件名以userxxx命名) app.vue<template><button@cl......