首页
论坛
课程
招聘
lua sethook 如何hook类表里面的函数
2022-5-15 20:06 3551

lua sethook 如何hook类表里面的函数

2022-5-15 20:06
3551
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
看这个文章学到了如何HOOK 但是文章没教到HOOK类里面的 找了好多资料也没有说这类的 也不知道可能不能HOOK
https://blog.csdn.net/oChunChunYuDong12/article/details/109616199
 
local 场景类_场景 = class()
function 场景类_场景:平均等级啊()
    local dj = 0
    for i=1,#self.队伍 do
        dj = dj + self.队伍[i].等级
    end
    return floor(dj/#self.队伍)
end
function trace(event, line)
      --测试了几种方法均是无效
      平均等级 = 平均等级啊
      场景类_场景:平均等级 = 场景类_场景:平均等级啊
end
 
debug.sethook(trace, "c")
遍历G表里面的函数也没看到有类里面的函数
不知道这种类可以HOOK吗

看雪2022 KCTF 秋季赛 防守篇规则,征题截止日期11月12日!(iPhone 14等你拿!)

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 142
活跃值: 活跃值 (731)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Yecate 活跃值 2022-5-15 23:49
2
1

lua的class实质是table,所以拿到class的Instance 直接替换函数即可

        -- 替换 NetMesageHandler.OnNetMessage 函数(收包函数)
        if self.originOnNetMessage == nil then
            local NetMesageHandler = require("Lobby.Script.Common.NetMesageHandler").GetInstance()
            self.originOnNetMessage = NetMesageHandler.OnNetMessage
            NetMesageHandler.OnNetMessage = function(NetMesageHandler, json)
                require("GamePlugin").getInstance():OnNetMessage(json)
                self.originOnNetMessage(NetMesageHandler, json)
            end
        end


游客
登录 | 注册 方可回帖
返回