【干货】如何使用CE进行游戏逆向?13:Code Filter代码过滤

文摘   社会   2025-01-06 00:00   广西  
在上期教程中,我们讨论了“call”是什么以及为什么需要调用游戏中的“call”。这节课,我们将介绍C中的一个小功能,称为代码过滤,也叫做code filter。我们将看看它如何帮助你快速找到你想要的那个“call”。
这个功能在国内好像没有太多人提及过,也没有人专门讲解过。但毕竟它还是存在的,我们就来简单介绍一下。需要说明的是,本节课并不会完整地教你如何找到游戏中的“call”,因为要找到“call”,你需要理解对战(calling convention),以及如何分析参数。如果你对这些都不了解,那么就无法对参数进行分析。我只是介绍一下这个功能,当你将来达到一定的水平,需要找到游戏的“call”时,希望你能记得本期教程所学的内容,也许能够帮到你。
现在我们直接进入游戏,不需要任何准备。首先,点击内存视图,里面有一个工具,叫做代码过滤器。打开后,会弹出一个小窗口。在这里,我们选择从反汇编器开始,然后选择进程和模块,点击游戏的主模块,然后确定。接着,它会进行一个扫描,扫描的速度取决于游戏的大小,越大的游戏扫描速度越慢。实际上,它应该是在所有的代码上下一个软件断点。然后,点击开始,等它加载完毕后,会让你将调试器附加到当前进程,点击确定即可。
确定后,代码过滤器就已经开始运行了。比如说我们想要找到与跳跃相关的代码,我们可以先执行一次跳跃。在代码过滤器中,不需要选择任何选项,与我们扫描数值时需要选择各种类型扫描方式不同,只需要点击“已经执行”按钮。这时,它会显示执行了多少个“Q”。比方说,刚才的短时间内执行了700多个“Q”。
然后,我们返回游戏,反复执行一些动作,例如走动、切换武器、开火等。除了跳跃之外的任何动作都可以。然后我们再次在代码过滤器中搜索“已经执行”,此时结果只剩下七个。再次跳跃后,结果只剩下六个。你会发现,其中一部分在跳跃时就已经执行了。
这样一来,我们就能够非常方便地找到与跳跃相关的功能。至于这六个call中哪一个是我们需要的,就不是今天要讲的重点了。我只是告诉你,确实有这样的功能,你们可以自己尝试去寻找。如果你们理解了调用约定和对战,你们可以自行设置断点,可以从访问Z坐标的地方开始查找,然后看看哪个call与这些代码有关。不过,考虑到大家的基础,我就不带着大家去找了。等到你们用到的时候,别忘了这里还有这个功能可以尝试。
好了,本期教程就到这里。


暮色的狐
这是一只高强度上网冲浪、高质量输出内容的狐狸。主打ACGN杂谈、技术干货分享、第九艺术鉴赏、网梗百科解析、情感树洞鸡汤、正能量价值观~
 最新文章