严正声明:本文写作的初衷是揭示沙盘软件中数据校验的漏洞和缺陷,以供沙盘软件继续修改和完善,以此提高经济学原理的课程质量。
由于本人在经济学原理结课一年半之后才接触到Cheat Engine,所以本人并没有使用文中技术刷分,在沙盘作业中也没有拿到满分。
对于还未学过这门课的同学,本文仅供参考,诚信为本,切勿用于实际操作。
0x00 沙盘作业
经济学原理是大连理工大学软件学院的一门“选择性必修课”,如果是开设在正常的学期,可能会有考试。在博主上这门课的时候,由于开设在小学期,并且正值疫情期间,于是改为大作业。大作业除了文档,一个比较含有技术含量的部分就是沙盘经营,即在“人机对抗ERP电子沙盘软件”中运营尽可能长的时间,应该是运营满6年满分。
难点在于资金比较少,一开始只有100M,还有40M贷款,并且这个模拟器没有撤销功能,一不小心把生产线卖了哭都来不及。如果破产,游戏结束,大部分人都坚持不到6年。
0x01 Cheat Engine
Cheat Engine是一款专注于游戏的修改器。它可以用来扫描游戏中的内存,并允许修改它们。它还附带了调试器、反汇编器、汇编器、变速器、作弊器生成、Direct3D操作工具、系统检查工具等。
Cheat Engine 可以在官网下载。
Cheat Engine 内置提供了一个教程和一个供破解的游戏。教程可以帮助你快速上手 Cheat Engine 的基本操作,如果对自己的技术有信心,可以把它提供的游戏破解了。
两个东西都非常有意思,如果你不满足于跟着教程一步一步做,而想搞明白里面的原理,可以好好学一学软件学院提供的计算机组成原理、操作系统、编译原理一系列的课程,不过软件学院没有系统地教授汇编语言,王爽的《汇编语言》是一本不错的书。如果有时间,博主会把内置教程和游戏的原理写一篇文章。
0x02 开干
我们之前说到,沙盘作业的难点在于资金比较少,一开始只有100M,而且破产了就结束了。所以我们的目标就是把资金变成999M。
首先我们打开沙盘,看到当前现金是100M。我们随后打开 Cheat Engine,选择打开进程功能,并且选择沙盘进程。
在Cheat Engine的数值框中输入100,检查一下扫描类型是“精确数值”,并且数值类型是“4字节”,点击“首次扫描”。
我们可以看到,Cheat Engine 扫描到了很多个地址,这些地址对应的值都是100。但这些值中只有一个是我们要找的,我们需要继续筛选。
在沙盘软件中,我们把3个厂房买了,现金变成32M。我们在 Cheat Engine 的数值框中输入32,点击“再次扫描”。
现在,只有一个地址的值是32,这就是我们要找的地址。
现在我们双击这个地址,把它加入到下面的列表中。然后把它的值改成999。
当然,现在内存中的值已经改成了999,只不过沙盘软件还没有更新而已。我们只要花掉一点钱,比如在广告中投入10M,就可以看到现金变成了989M。
开始你的操作吧, wolf of wall street!
0x03 后记
这个软件能看出来已经有点老了,简介是这么写的:
该软件在“金蝶杯”2009年全国大学生创业大赛河北省赛暨ERP沙盘大赛中使用,有23所本科与高职院校安装练习并比赛。
而检索和修改具体值是 Cheat Engine 的一个最基础的功能(更多功能可以玩一下Cheat Engine 内置教程,比修改这个资金难多了),所以这个软件的数据校验和安全性是有问题的。对于这个软件的开发者,可以考虑一下加强数据校验的功能,比如加密、校验和等等。