壹影博客.
我在下午4点钟开始想你
luaHook函数-hook案例详细分析
  • 2023-11-1日
  • 0评论
  • 13632围观

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] 虚拟机已停止运行

 

发表评论

渝ICP备19011465号 | 渝ICP备19011465号-1