欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 12.第二阶段x64游戏实战-远程调试

12.第二阶段x64游戏实战-远程调试

2025/4/19 7:50:24 来源:https://blog.csdn.net/qq_36301061/article/details/147284842  浏览:    关键词:12.第二阶段x64游戏实战-远程调试

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:11.第二阶段x64游戏实战-框架代码细节优化

本次写的内容是关于调试、排错相关的,在写代码的过程中肯定会遇到问题,不可能会一帆风顺

比如说注入我们写的dll之后游戏就会崩溃或者点击按钮之后会崩溃,这要怎么解决问题?怎么找出问题在哪,比如有人写了代码会让游戏崩溃,然后跑过来跟我说游戏崩溃,我根本不知道你说的是什么,正确的是找到问题,比如这行代码怎么怎么报错了怎么怎么不行,就要把问题的细节描述出来

首先是注入就崩溃,这是什么情况?

关于注入就崩溃这个问题,首先要搞清楚代码执行的流程,就是说我们的dll一注入进去会发生什么情况,从哪里开始执行,如下图红框MFCdll一注入进去会从以项目名字命名的.cpp文件开始

从InitInstance函数开始执行

所以一注入就崩溃可以写打印日志的代码,如下图红框的代码是用来打印日志

然后如下图红框就在InitInstance函数中调用LogA函数,打印日志,这样可以看到执行到哪一行,导致的崩溃,如果打印了1111没打印2222就说明73行代码报错了,这样就定位到错误的代码了,就是看它执行到那了该有的日志有没有打印出来

查看日志的方式是通过Dbgview这个软件,打开之后点击下图红框位置,包含写的*说明所有日志都打印,包含它还可以AAA*这样就只打印内容以AAA开头的数据,排除写的1;2;3说明只要日志的内容包含1或2或3就不显示

现在的日志代码正常执行它会打印1111、2222、3333、4444

注入打印的内容,为什么没打印4444?因为 PMainDialog->DoModal(); 这个代码是一个模态窗口,代码会在它这一行卡主后面不会执行,只有把窗口关闭了才会打印4444

关闭窗口打印4444,通过这些步骤的打印就可以清楚的知道代码执行的流程,也就能知道注入就崩溃是哪一行代码引起的

注入不崩溃点击按钮这种的崩溃怎么办?

也是跟上方注入崩溃一样,找到按钮点击之后执行的函数,把每一行都加上LogA,看看执行了哪一行代码导致了崩溃

如果不想用上面的方式可以使用 Visual Studio 2022 提供的附加,如下图点击附加到进程

然后如下图搜索进程名,找到想要附加的进程

鼠标左键单机进程,然后点附加

附加之后的样子

然后在入口位置设置断点,如下图红框

然后使用注入器注入我们的dll文件,然后就可以触发我们设置的断点了

它是可以直接看得到每个变量内存的数据的,可以很方便的看崩溃的原因 ,比较好用,但是有些有检测的软件没法使用,到时候还是要用LogA的方式


img

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词