一款赛车游戏付费DLC的破解浅尝分享
本帖最后由 GTXFuryNano 于 2024-3-29 19:58 编辑笔者最近在摸鱼时发现了一款游戏——《微型机器4》,该游戏是由Codemasters公司发行的遥控车竞速类游戏,同时也是和孩之宝同名玩具联名推出的游戏。该游戏拥有750辆赛车可供玩家选择,不过游戏通过正常方式游玩通关仅仅能够解锁250-300辆赛车,这显然对于笔者这种完美存档爱好者是非常扎心的。
(通过图片可以看到,原始载具都是非常难看的棕白配色,例如Muscle、Luxury系列)
经过笔者研究,如果想要解锁游戏的全部载具,需要进入游戏的Bonus选项,输入对应的Code才能解锁,而这个Code笔者查遍了国内外网站也没发现相关资料。
既然查不到,那咱们就试试有没有什么彩蛋或弱口令,但是很显然游戏不会让我们这么容易得到的,都会弹出Code Invalid提示。(个人猜测解锁方式是购买孩之宝的玩具获得解锁口令?算是早期游戏的付费DLC了,但是这个游戏是2006年的,估计玩具也早已停产了)
那么就得从技术层面下手了,首先对该游戏进行查壳,看起来是一个很奇怪的壳,为了保险起见,这次我们采用附加的方式进行操作。
打开OD,附加游戏主进程MMV4.exe,并定位到主程序入口,进入文本字符串搜索页面,按照通杀思路搜索Code Invalid。可惜并没有任何结果。
那么我们不妨换种思路,这么大体量的游戏(游戏容量高达1.3G,这在2006年可以说算的上中大型游戏了),游戏程序员在编写程序时肯定会留下注释方便进行调试,所以我们可以尝试搜索函数名称。还是在字符串页面,搜索Bonus,经过排除(Bonus同理也有机关的意思,游戏确实是有机关机制)我们找到了类似解锁成功和失败的注释,很明显这是一条判断类型的注释。
接下来双击进入注释,果不其然我们在上面发现了一条跳转,点击跳转,正好跳转到验证失败的注释处。
验证一下,在这个跳转处F2下断,返回游戏输入任意一个Code,成功在该跳转处中断,说明此处为游戏验证Code的关键跳转。
那么接下来就简单了,我们可以把这个跳转nop掉或者改成把跳转改成jg都可以实现爆破验证。
改完后,按F2关闭跳转断点,然后回到游戏输入任意一个Code,咦?怎么还提示Code Invalid呢?
别担心,因为我们并没有处理这个提示框(个人猜测这个提示框应该是调用游戏内部绘制系统做的),这时候我们退回到上一级菜单,惊喜的发现该DLC已经被解锁!
返回到车库,对应组别的车辆也已全部成功解锁。
最后,别忘记给存档存盘。当然,你也可以通过右键改动处,选择复制到可执行文件,所有修改,将修改后的游戏主程序保存,以便后续随时解锁使用。
总结:这次尝试方法可以针对一些搜不到错误提示框但是能搜到函数注释的程序使用。虽然说程序已经破解成功,但是也有一些不完美之处,例如没有成功过掉错误提示,导致想要查看是否成功解锁还得退回到上一级菜单查看。密码输入界面右上角提供了Access Code,猜测应该能通过这个分析算出来真正的Bonus Code,本人也在持续学习相关技巧,期待某日能够研究成功。
最后附上全载具解锁+隐藏载具出战图
以上仅供讨论软件攻防技巧学习使用,如有需要还请大家支持正版软件! 我很好奇,楼主是什么灵感激发你突然想到搜索Bonus的?要是我的话可能就去搜CODE了哈哈哈 有时候玩游戏,没有破解游戏带来的成就感多。 先插眼,慢慢学习 本帖最后由 GTXFuryNano 于 2024-3-29 15:58 编辑
supernox 发表于 2024-3-29 12:59
我很好奇,楼主是什么灵感激发你突然想到搜索Bonus的?要是我的话可能就去搜CODE了哈哈哈
其实搜Code也能搜到,但是干扰项要多一些(因为游戏公司叫Codemaster)。其实搜Bouns也是凭借直觉,感觉程序员写这个函数的时候一定会加上对应的注释 也想找下这个游戏试试 感谢分享 感谢分享,好好学习下 这个带壳也可以直接保存? virtualer 发表于 2024-3-29 13:41
这个带壳也可以直接保存?
可以的,这个壳似乎并没有做校验检测及虚化代码段