luaHook函数-hook案例详细分析
大家可能在群里见过许多大佬Hook某某,那么Hook是什么呢?
Hook-英文翻译为钩子,那编程中的hook是什么呢? 其实hook就是在函数前或后加一个钩子 哈哈 说直白点就是说监听一个函数执行 函数执行前或执行后拿到对应的参数去触发一些你自己定义的事件。比如我要hook系统函数print,就是当用户使用print的时候我去拿到用户他输入的print的参数内容,然后替换原有的参数内容再执行原有的函数,下面是hook print的lua代码仅供参考
--定义一个H_Print全局函数
H_Print = function ()
--因为我们要替换原有print我们需要定义一个_T_Print来存放原有的print函数
--只有当_T_Print这个变量不存在的时候才会Hook
if not _G._T_Print then
--保存原有的print函数
_G._T_Print = _G.print
--替换原有全局变量的print函数
-- ...是扩展参数
_G.print=function (...)
--将扩展参数转换为数组
local args={...}
--如果参数是String类型则添加一个前缀
for k,v in pairs(args) do
if type(v) == "string" then
args[k]="@Hook "..v
end
end
--最后执行我们原有的print函数 并且提供参数
_G._T_Print(table.unpack(args))
end
end
end
--hook print
H_Print()
--调用全局print 做测试看看效果
print("我来Hook啦..","666")
运行结果
-- [08:22:47] 虚拟机初始化完毕
-- [08:22:47] @Hook 我来Hook啦.. @Hook 666
-- [08:22:47] 虚拟机已停止运行
发表评论