绕过《红色警戒2:尤里的复仇》模组DP-Kratos的二次修改检测

仅供测试使用


严禁将本文提供的方法用于制作违反用户协议的二次MOD版本或盈利。

控制 · 收容 · 保护

DP-Kratos是一个有效的《红色警戒2:尤里的复仇》增强模组平台,但是该模组在7.4版本之后引入了二次修改检测,检测到模组当前被挂接到《心灵终结》等Mod版本上时会拒绝运行,并产生大量导致用户无法正常进行游戏的异常效果。

由于DP-Kratos是基于.NET平台编译的,因此结合其源代码,可以使用dnSpy等工具,直接修改其二进制文件以绕过该检测。

将DP-Kratos解压后,启动dnSpy,加载下列文件:

{$DPKratosRoot}\DynamicPatcher\Libraries\Extension.Kratos.dll

其中,{$DPKratosRoot}为DP-Kratos的安装根目录,例如您的游戏文件夹。

在dnSpy中,定位到下列函数:

Extension.Kratos
-> Extension.Kratos.dll
-> Extension.Ext
-> Kratos
-> NotAllowedList()

该函数是一个返回值为布尔(Boolean)类型的函数。在dnSpy右侧的代码窗格中,右键单击函数名“NotAllowedList()”,点击“Edit IL Instructions…”,弹出IL指令编辑窗口。

在该窗口中,定位到最后一行(即“Op Code”为ret的返回行),将其上一行的OpCode从原先的“ldloc.s”,改为“ldc.i4.0”,表示固定向返回栈中压入False,从而使该函数永远返回False

完成后,点击IL编辑窗口的“OK”按钮,回到dnSpy主界面,此时应该可以观察到dnSpy的代码窗格中函数的“Return”指令已经固定变为“Return False”。点击dnSpy工具栏的“Save All”选项,保存对当前文件的更改。

使用修改后的DP-Kratos全部复制到目标游戏根目录,或单独替换DynamicPatcher\Libraries\Extension.Kratos.dll文件,再次启动目标游戏,即可绕过该检测。

本方法在Kratos-Lite Ver.0.43上测试通过。

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License