【一】什么是重载
名字一样,但是参数不一样
【1】重载介绍
-
在Java中,重载(Overloading)指的是在同一个类中可以定义多个方法(函数)具有相同的名称,但参数列表不同的情况。
-
换句话说,重载允许在同一个类中使用相同的方法名执行不同的操作,提供了更多的灵活性。
【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