百度首页 | 百度空间
 
查看文章
 
称霸四海(Corsairs),WindowsXp下肉搏战(甲板战)程序错误补丁
2008-01-26 08:33 P.M.

这个游戏满老了,好像是2000的时候的吧,当时狠喜欢玩,最近在veryced上看到,就又下载了,发现很多人和我一样,在windowsxp sp2下,一到甲板战斗就程序出错退出.由于我太怀旧了,非要玩它一玩儿,于是这个补丁就写出来了.其实出错原因狠简单,现在计算机速度快了,时差有可能是0,当时估计没想到这点,于是div 0就异常了.

该游戏在verycd上的下载地址:

http://lib.verycd.com/2008/01/21/0000178207.html

补丁程序,打过补丁的exe,源代码都可以在我的网络硬盘(blog首页友情链接)里下载,

这里贴上代码:

#include "windows.h"

#define repair_count 6
unsigned int repair_addr[] =
{
0x0003817B, 0x000387D6, 0x00038F28, 0x0003911D, 0x00039421, 0x000396FD
};

unsigned char r_code[] =
{
0xA1, 0x70, 0x15, 0x4D, 0x00, 0x2B, 0xC8, 0x85,
0xC9, 0x75, 0x05, 0xB9, 0x01, 0x00, 0x00, 0x00,
0xC3
};

unsigned char call_code[] =
{
0xB8, 0x60, 0x00, 0x40, 0x00, 0xFF, 0xD0
};

#define GAME_NAME ".\\Corsairs.exe"
#define GAME_BAK_NAME ".\\Corsairs.exe.bak"
#define BANNER "称霸四海XP肉搏战错误补丁程序,作者:ZVROP"
int main(int argc, char* argv[])
{
unsigned long write_n;

CopyFile(GAME_NAME, GAME_BAK_NAME, TRUE);

HANDLE hd = CreateFile(GAME_NAME, GENERIC_READ|GENERIC_WRITE,
   FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hd == INVALID_HANDLE_VALUE)
{
   MessageBox(NULL, "文件Corsairs.exe不存在", BANNER, MB_OK);
   return 1;
}

SetFilePointer(hd, 0x60, 0, FILE_BEGIN);
if(FALSE == WriteFile(hd, r_code, sizeof(r_code), &write_n, NULL) || write_n != sizeof(r_code))
{
   MessageBox(NULL, "补丁修复错误", BANNER, MB_OK);
   CloseHandle(hd);
   return 1;
}

for(unsigned int i = 0; i < repair_count; i++)
{
   SetFilePointer(hd, repair_addr[i], 0, FILE_BEGIN);
   if(FALSE == WriteFile(hd, call_code, sizeof(call_code), &write_n, NULL) || write_n != sizeof(call_code))
   {
    MessageBox(NULL, "补丁修复错误", BANNER, MB_OK);
    CloseHandle(hd);
    return 1;
   }
}

CloseHandle(hd);

MessageBox(NULL, "补丁修复成功", BANNER, MB_OK);
return 0;
}


类别:debug&crack | 浏览() | 评论 (21)
 
网友评论:
1
2008-01-26 08:37 P.M.
HOHO~~~想要个船加速补丁。。。。。
 
2
2008-01-29 01:34 P.M.
nice,我也准备要迁移到baidu blog了,哈哈
 
3
2008-02-08 08:26 A.M.
我下了 你硬盘的 客户端 可是 一进到 肉搏战的场面 还是会被踢出来 这到底是为什么呀???
 
4
2008-02-09 11:00 A.M.
请问你的网络硬盘的地址是什么啊?谢谢~
 
5
2008-02-11 09:28 P.M.
可能你和我的版本是不一样的,请参考文中给出的地址下载.如果一样,请告知我出错的程序地址(windows错误报告里面的信息).
网络硬盘的地址blog首页有.
 
6
2008-03-09 07:46 P.M.
不知道为什么解决了肉搏战 可是不知道为什么就是不能存档
 
7
2008-03-10 09:50 P.M.
不好意思啊,我当时好像没这个问题的说.这个游戏已经被我删除了,所以我现在也没办法确定是什么问题了.-_-..
 
8
2008-03-18 10:20 A.M.
zv大哥啊,您的那个skydrive是怎么用的?
我这里无论怎么弄就是显示不能开通
 
9
2008-03-18 11:42 A.M.
我记得是可以啊,不能注册的话,到控制面板把语言改成英文,再去注册试试.
 
10
2008-04-09 11:23 A.M.
怎么进你的网络硬盘啊?不好意思,菜了!嘻嘻
 
11
2008-04-12 04:09 P.M.
怎么进你的网络硬盘啊?打不开了。。。
 
12
2008-04-12 04:33 P.M.
skydriver打不开我也没办法了..过几天再看看吧.
估计又是被gfw给屏蔽了
 
13
2008-04-14 11:01 A.M.
网络硬盘进不去,我想问下怎么用你的代码运行补丁程序?多谢
 
14
2008-04-14 11:49 A.M.
三种方法:
1.提供了一个修改之后的主程序exe,直接覆盖就行了.
2.提供了一个修改程序,拷贝到主程序目录,运行就行了.
3.还提供了源代码,如果有编译器,编译出来就是修改程序.参考2.
 
15
2008-05-10 04:14 P.M.
用了你的补丁 怎么不能存档了 ?
 
16
2008-05-13 11:20 A.M.
不可能呀,我特地的去又下载了一次游戏,打了补丁,是可以保存的.
是不是你安装完了ini里面没有修复路径?
或者试试在一个已有的保存记录上覆盖试试.
是没有问题的,我只是修改的d3d部分的代码,和保存应该没有任何关系.
 
17
2008-05-16 00:01 A.M.
用vs.net不能够修复,而且运行前有错误,const不用转换!
 
18
2008-05-16 10:36 A.M.
不知道楼上的是什么意思.
不过很不幸的,我当初玩这游戏的机器现在已经不在了.
所以我现在测试的没问题,也不知道是不是真的没问题了.
大家要是试了还有什么出错,就另外找个办法吧.^_^.
 
19
2008-07-03 10:25 P.M.
大哥,代码要怎么用啊,能不能做成.EXE的程序直接让我们装啊
 
20
2008-10-06 05:48 P.M.
还有一个简单的方法,主要是CPU的占有率太低出的问题,你开一些占CPU高的东西就不会在肉搏战时退出了,我试过没弹出来,网络游戏战CPU是很高的,随便开一个网络游戏,CPU的占有率就上去了,在玩这个游戏就没弹出来,但是肉搏战的速度快了一些。
 
21
2008-10-07 02:47 P.M.
恩,这也是一个不错的解决办法.
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu