, 而是会执行一个loop, 等待EmmyLua的退出通知, 收到退出通知后会直接结束创建的目标进程并结束自己)
Backend代码浅析
具体的代码我就不展开了, 重点通过自己挂接我们自己的客户端程序和编辑器的过程碰到的问题以及解决问题的方法简单说一下...所以肯定是没有办法检查到Core.dll中位于5000多序号的Lua Api的:
修改上图中的导出符号个数到0xff, 重新挂接客户端, 发现已经能正确检测到Lua并输出了相应的日志, 但是, 程序马上就崩溃了...Attach, 各种报错或者直接崩溃
其中有个错误刚好群友贴了, 借图用一下, 报错如下图所示:
这个问题查的时间相对久, 有点莫名奇妙, 最后还是从直接调试启动和附加启动的差异找到了一点线索:...对照代码仔细分析了一下, 发现EmmyLua的Lua Api查找, Hook Lua Api的时候, 并没有提供任何保护, 也就是Hook注册之后, 如果目标应用程序的Lua虚拟机正在工作, 那么马上就会触发...的错误处理函数退出后, 调用原来的Lua错误处理函数, 一般会将栈顶(-1位置)的变量当成字符串来处理, 因为栈顶并不是字符串, 会直接触发崩溃, 简单把报错的message push回栈顶, 程序即可正常工作了