标题:
我准备制作一款地雷传MOD,请指教!!!
[打印本页]
作者:
momo2255
时间:
2011-4-11 18:10
标题:
我准备制作一款地雷传MOD,请指教!!!
上个月,玩金山老游戏地雷战,突然奇想做个MOD。
于是,我开始动手了。
首先,我的目标是人物对话,打开地雷战目录,发现一个TXT.dat文件,怀疑是地雷战对话文件。用WINHEX打开,发现全是乱码,相信是经过加密,于是随意修改一个话,启动游戏,发现游戏主角死亡时对话信息出现一段乱码。
于是启动OD,用二进制搜索TXT乱码,查到地址后,下硬件断点。再进游戏,出现对话事件后,OD中断,看到把TXT文件中的乱码一个字节送入CL,然后xor cl,51.
不错,XOR 51应该是解密关键,于是回到WINHEX,打开TXT.dat,用编辑,修改数据,XOR 51,确定。果然,出现游戏人物对话。
游戏文件夹下MAP.dat,接照字面上猜,不是地图图块就是地图图块像素。WINHEX打开MAP.dat找到dlz-11.blk,把后面全是十六进制数据全改为0,再进入游戏,发现第一关地图地图全是空地.
修改成功,确定了MAP.dat是游戏地图图块文件。
还原MAP.dat未修改前数据,启动OD,加载地雷战,F9启动。进入第一关桃花岭,搜索MAP中第关地图图块数据,找到地址584390,随意选定一块区域,填充0。果然,游戏地图改动。在数据窗口把584390加入标签,标签名为地图图块。
接下来,我们就可以找所有地图图块代码,584390地址中两个字节表示一个地图一个地形图块,一个一个手动填写,太麻烦了。启动VC吧,HWND hwnd=::FindWindow(NULL,"dlz");
DWORD id;
::GetWindowThreadProcessId(hwnd,&id);
HANDLE handle=::OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION,FALSE,id);
WCHAR buf[1000];
for(int i=0;i<1000;i++)
buf
=(wchar)i;
bool b=WriteProcessMemory(handle,(LPVOID)(0x584390),&buf,2000,NULL);
如果代码把地图内存图块全部找出,加到游戏果然屏幕全是不同地图图块。
嗯,全是图块代码也到手了,以后可以用这些代码写地图编辑器。
等会接着播报调色板、脚本剧情,DX中DDRAW破解,找出游戏消息,重载游戏、在游戏是载入LUA引擎等等等等
作者:
momo2255
时间:
2011-4-11 18:13
有感兴趣的人吗?
如果有,我接着播放。
作者:
lxking2856
时间:
2011-4-26 11:24
有不过这样太慢了!何时才能出地雷传?
作者:
huyong
时间:
2011-8-28 12:15
希望能早日玩上这游戏,支持一个
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/)
Powered by Discuz! 5.0.0