红色警戒2逆向系列:开篇
呃呃 第一次写专栏,有点不知道从哪里开始写
所以众所周知,红色警戒2是由西木公司在2000年发行的一款RTS游戏。非常不幸的消息是,红色警戒2的源代码因为年代过于久远似乎已经丢失了。
这就对于MOD制作造成了极大的困难。除此之外,至今,红色警戒2也只能8人对战。试想一下如果10v10,会是一件多好玩的事情。
并且开发者社区也及其需要一个逆向工程项目。实际上自从蓝天和08等up主入驻B站以来,红色警戒2重新受到了极大的关注。这种情况下红色警戒2的二次开发的需求也非常的广泛。
目前,对于红色警戒2的MOD开发基于修改ini文件和使用Ares平台。修改ini文件简单,但是不能实现一些高级的功能。而Ares项目确实是非常好的开源项目。Ares通过Syringe将代码动态注入红色警戒2进程中。并且能够满足大部分的MOD制作需求,但是Ares也有一些做不到的事情,当然也可能是我太傻,所以才以为它做不到,以下列举几个:
不能自动化控制玩家的行为
不能修改网络代码
不能修改图形引擎渲染方式
不能修改音效引擎
因此,虽然Ares确实已经很厉害了,但是还是有不足之处。在这篇专栏中,我会研究红色警戒2这个游戏。并且可能会实现以下几个功能:
采用异步的网络模型;因为现在的游戏中,只要一个人卡,游戏就会卡。这很有可能是同步的网络模型导致的。我初步研究发现红色警戒2似乎使用了Socket连接方式。如果有懂的人可以教我
开发大于8个人的模式;初步研究猜测红色警戒2可能采用了p2p的模式,这属于是远古技术了,因此西木工作室可能觉得多于8个人会出现网络问题。采用服务器-客户端模式,以及各种负载均衡器技术。开发出更多人的模式是会很有意思的
训练能吊打08的AI(大概);实际上很早之前就看到有人要这么搞了。

而且还有人给我出谋划策

所以今天我们就要迈出吊打08的第一步,为被08欺压的人们报仇(大概吧)
不过需要注意的是,本专栏提到的所有技术,不能被用于违法目的或者制作恶意软件。逆向工程是黑客行为,不要拿这个技术出去搞破坏,不要拿这个技术出去制作外挂。本专栏也不会去分析主流对战平台的反作弊机制,大家耗子尾汁。
我觉得大家肯定不想看一堆废话,所以我先讲一点点内容。本人技术有限,做的东西烂请不要骂我,感谢。这里分析的是红警战网从网络上下载的游戏,初步判断gamemd-spawn才是真的游戏。其他的gamemd-ares和gamemd有什么用以后再看
首先,我们不难发现入口函数
入口函数做了哪些工作呢?GetCommandLineA()这个函数是windows用于读取命令行参数的函数。而之后的几个函数经过检查都是在parse这些参数,FUN_007cbddc()的目的在于退出程序。FUN_007d58f0()的目的在于处理程序出错之后的异常。
真正的主要逻辑包含在FUN_006bb9a0()中。至于主要逻辑写了什么呢?下一篇文章再讲。
下集预告:COM服务器 以及连接COM服务器(或者使用GDB调试,看情况)
什么时候发?看心情
(顺便问一句,红色警戒2似乎有反调试机制,有懂哥知道怎么反反调试吗)
(再顺便问一句,大家想看到什么内容?如果大家愿意告诉我的话,我会很开心的)