以下内容来自大神maesgod的专业解释:
可能有些同学在玩暗黑2的时候,有时候会碰到You are killed by warden because error response.[reason=5],然后游戏卡死,只能退出游戏的问题。
关于这个问题,是d2warden设计本身的问题。现在的d2warden使用一种比较简单粗暴的方式在侦测玩家是否使用了某种hack,因此考虑不周,容易出现误杀的情况。
这个问题的基本原理,就是某个hack规则检测出了问题。
例如,服务器需要检测玩家的d2client.dll 0x1234出是否是值0000(正常值)或者9999(hack值),如果发现玩家返回的值是0000,则认为玩家没有使用某种hack,如果玩家返回的是9999,则认为玩家使用了某种hack,当然要把玩家从服务器上踢掉。
这种检测一般情况是够用了的,但是没有考虑到windows操作系统的可重定位机制带来的影响。
由于可重定位机制的存在,导致d2client.dll启动的时候,没有被加载到预定的地址0x6FAB0000,而是被动态修改了地址,比如加载到了0x10000000,此后d2client.dll里面所有可重定位地址,都需要修改,这个过程,称为程序加载的重定位,具体可以百度。
如果某种d2warden检测规则,恰好检测到一个d2client.dll中的可重定位地址部分,那么玩家返回的值就不是理想的0000了,比如返回了5555。而这个值,既不是正确值0000,也不是hack值9999。这个时候,严格的规则检测,就会将玩家踢出游戏,并报告You are killed by warden because error response.[reason=5]
好了,其实一切的一切,都是d2warden设计不完善带来的。目前情况下,一些暂时的解决办法是:
1、看看最近是否安装了新软件、新驱动,尝试卸载掉,因为这些东西会在你启动d2之前,就预先装载了一大堆dll到内存里。
2、重新启动机器。
专业一点的办法,就是下载LordPE等软件,查看到底哪些dll占用了d2的地址空间,顺藤摸瓜,把它们禁用或者卸载掉。