[TOC]
前言
此篇为后续篇章,结构相对比较简单,建议结合前章观看。
传送门:星际争霸人口无限DIY
本次基础知识
调试
打入断点,控制代码逐行执行时的动作。
方法
在编程里面,方法是多行代码的合集。调用方法可以直接实现该代码合集的执行。如本处,检测是否能建造,就是一个方法,会有很多地方会调用,来判断是否符合条件。方法的多次重复调用主要是达到精简代码的目的。
详细步骤
200人口突破实现
重新开始一局游戏,想尽办法让人口达到200上限(秘籍开起来)。
达到上限的标志如下图,会提示"Supply limit exceeded"。
找到人口判断关键方法,并标出正确制造所有的跳转。(就是在注释中加入normal那个操作,如果之前没有关闭过程序,normal会一直存在。见上一篇的"跳转逻辑分析"部分)
此时如果在方法口打入断点,会发现每过几秒就会进入一次断点。这说明,检验方法一直被反复调用。此时要调试起来难度就很大,但是我们可以借助DxWnd来实现调试。
程序在使用DxWnd窗口化,当鼠标切换出窗口时,程序运行会自动暂停,于是我们可以借助这个特点,过滤掉多处方法调用导致的错误触发。
先在游戏中找到建造会超过200人口的单位,然后切换到CheatEngine,会发现游戏已经暂停。在方法口打下断点,然后将鼠标移动到游戏窗口的单位上,再点击鼠标,此时会直接进入断点。
对比与正常逻辑的跳转,找到异常的跳转处,发现正常逻辑需要跳转,但是此处没有跳转,所以直接改为jmp。
修改完成后,实现200人口破解。
OllyDebug修改exe文件
CheatEngine中纪录需要修改代码的内存地址0040233F。
然后完全退出CheatEngine,因为一个程序只能同时被一个软件调试。
然后,自己尝试修改一下,如果不会,参考上一篇OllyDebug修改EXE部分。
结尾
至此,人口无限算是真正的完成了。建议大家看完第一篇之后,可以用第二篇来自己练习,很多思考方式都是相似的。慢慢熟悉了之后,很多游戏都可以用类似的方式破解,再次谢谢大家。
|