前段时间下了个学习版尖峰战士2,在5900hx上始终报错,后来看到国外有人做了Steam版修正补丁,但是Steam已经下架这个游戏,只能自己动手。

用x64dbg启动以后直接就跳到了出错点
汇编指令是DIV EDI,寄存器里EDI为0
所以会出现divide by zero 错误
直接大力出奇迹,把这个地方nop掉。

保存补丁以后再运行,游戏程序出现文件校验失败

经过分析发现,sub_737690中调用了WinVerifyTrust
如果校验成功,则返回0

Winverify.png
sub_737690返回al
若al=0 , test al,al ZF = 1,则跳转loc_40BB8F,程序正常运行
程序如果被修改,这里AL !=0, 只需要翻转JNZ,改成JZ,保存补丁

msgbox.png
就可以让高贵的锐龙用户也玩上幽灵行动尖峰战士2了
补丁一共9m,附件放不下,放个度盘地址
pan.baidu.com/s/1fMnZi5Izxcm7nuyVSr1ybA?pwd=h6j8