首页
社区
课程
招聘
lua sethook 如何hook类表里面的函数
发表于: 2022-5-15 20:06 5655

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

2022-5-15 20:06
5655
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吗

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 129
活跃值: (2763)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

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


2022-5-15 23:49
1
游客
登录 | 注册 方可回帖
返回
//