2010-04-13
更新了一点,尽量把demo做成program
2010-04-12
原来的程序在删除用户时,没有删除对应用户的游戏进度。现在修正
另外告诉大家一个关于游戏的小密秘。在帖子的最后。
植物大战僵尸全解密---存档篇
内存修改器游侠网上已经有了,再做也没意思了,我来做一个存档编辑工具吧
这是个很赞的游戏,最近沉迷上了.
由于本人水平太菜.老是徘徊在第4关.于是便拿出家伙把它修理了一番.
和游戏相关的,都分析出来了,有些不太常用到的,就不分析了。
没想到还挖出了不少好东西,不敢独享.
我分析的是它的存档文件数据,能分析的都分析出来了,整理成了结构体.方便使用.
存档文件对应的结构体内容如下:
users.dat
/************************************************************************/
/* userdata/users.dat 用户信息文件数据结构 */
/************************************************************************/
//文件头
typedef struct _FILEHEADER
{
DWORD dwValidFlag; /*值必须为0xE,文件有效性标识*/
DWORD dwNum; /*保存用户的数量,十六进制值*/
}FILE_HEADER, *PFILE_HEADER;
typedef struct _USERINFO
{
WORD wNameLen; /*用户名长度*/
LPSTR pszName; /*用户名,实际存放在文件中的是用户名的ASCII字符,不包含末尾的NULL字符*/
DWORD dwReserveed; /*保留,经测试,没有发现其它用途*/
DWORD dwIndex; /*用户ID, 对应生成相应的UserN.dat文件,N的值便是dwIndex/
}USER_INFO, *PUSER_INFO;
userN.dat(N代表用户ID)
/************************************************************************
* userdata/userN.dat 用户存档数据结构, N的值和dwIndex相对应,即每个用户自己的存档文件.
************************************************************************/
typedef struct _USERDATA
{
DWORD dwValidFlag; /*offset:0x0 值必须为0xC,文件有效性标识*/
DWORD dwGuan; /*offset:0x4 当前关卡 */
DWORD dwMoney; /*offset:0x8 金钱数*/
DWORD dwSilverCup; /*offset:0xc 获取银向日葵奖杯,得到金杯后,该位上的数字表示完成了n次冒险*/
/* 更多游戏通关 全胜条件:低0~4位和高24~28位都为1 */
DWORD dwSC_Game[10]; /*offset:0x10~0x30+0x8 生存模式通关*/
DWORD dwReserved_9[5];
DWORD dwXYX_Game[20]; /*offset:0x40+0xc~0x90+0x8 小游戏通关*/
DWORD dwReserved_10[15];
DWORD dwJM_1_9_Game[9]; /*offset:0xd0+0x8~0xf0+0x8 解迷游戏1-9关*/
DWORD dwReserved_11; /*这个是无限任务,无法通关, 记录的是通过该关的次数, 类似的偏移量还有几个,我全部保留了*/
DWOR
【原创】植物大战僵尸全解密---存档篇
最新推荐文章于 2024-06-03 10:39:21 发布