免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:57.第二阶段x64游戏实战-实时监控抓取lua内容
想要调用lua代码必须要有状态指针,状态指针太过于抽象,没办法很好的解释,这里只能通过它的作用来描述,不管是我们自己写还是使用游戏中的lua,都会要有状态指针,调用lua_dostring、lua_dofile等函数都会需要状态指针,状态指针在lua中是一个很重要的东西。
然后想要实现lua_dostring需要两个参数一个是rcx一个是rdx,rcx的值是状态指针,rdx的值是lua代码,现在lua代码已经得到了,还剩下状态指针,接下来就开始找状态指针
首先打开x64dbg,来到lua_dostring位置
设置断点
触发断点,之前分析的lua_dostring有多个地方调用,也就是说CTRL+F9再按F8会有多个分支,这多个分支使用任意一个就可以,都能找到状态指针
然后取消断点
然后按CTRL+F9再按F8,然后来到下图位置
开始分析,rcx的值来自于rax,rax的值来自于call,然后按F9,让代码运行起来
然后在下图红框位置设置断点
然后触发断点
然后按F7进入call,进入之后一路按F8,直到执行了ret
然后最终发现rax的值来自于下图红框,到这就找到了状态指针,注意这个代码是在game.exe模块中,然后记得复制一下特征码
然后计算偏移 00007FF7E4080000
0x973150