大富翁8存档修改器(大富翁8 修改器「建议收藏」)

发布时间:2025-12-10 19:38:16 浏览次数:6

大富翁8 修改器「建议收藏」-大富翁8存档修改器在哪

大富翁8 修改器「建议收藏」这里使用之前分析出来的数据结构写一个简易的修改器。在写之前需要确认如下事情一、如何取得对象在内存中位置由于之前分析出来的两个变量gRichCardsTable、gRichDataInfo是全局的变量,它们的偏移在每个发布版本中是确定的我使用的版本偏移值:gRichDataInfo0x231dacg

这里使用之前分析出来的数据结构写一个简易的修改器。在写之前需要确认如下事情

一、如何取得对象在内存中位置

由于之前分析出来的两个变量gRichCardsTable、gRichDataInfo是全局的变量,它们的偏移在每个发布版本中是确定的

我使用的版本偏移值:

gRichDataInfo 0x231dac

gRichCardsTable 0x231dbc

二、如何修改Rich8的内存数据

可以使用Windows的两个函数ReadProcessMemory、WriteProcessMemory来实现从Rich8进程中读取数据和写入数据。

实现思路比较简单,就是

通过ReadProcessMemory读取数据->界面显示

取界面数据->通过WriteProcessMemory写入修改后的数据

结构定义

#pragma pack(1)

struct RichUserCardItem
{
ULONG CardValue;      //卡片值
ULONG Reserved1;
ULONG Reserved2;
};

struct RichUserInfo
{
BYTE Reserved1[656];
ULONG CashValue;      //现金
ULONG SavingsValue;   //存储
BYTE Reserved2[28];
RichUserCardItem ArrayOfUserCard[8];//8个卡片
ULONG Reserved3;
ULONG Reserved4;
ULONG Reserved5;
ULONG CountOfUserCard;  //持有卡片的数量
ULONG CouponValue;    //点券
};

struct RichDataInfo
{
RichUserInfo* UsersInfo;  //玩家数组指针
ULONG Reserved1;
ULONG Reserved2;
ULONG UserTotalCount;    //玩家的数量
BYTE Reserved3[28];
ULONG IndexOfUserSelected; //当前玩家索引
};

struct RichCardInfo
{
ULONG* CardsTable;  //卡片表的指针
ULONG Reserved1;
ULONG Reserved2;
ULONG CardTotalCount;  //卡片的个数
};

#pragma pack()

下面是实现后的效果,试过是可以的。

挺简陋的,不过基本需要的功能都有了。

卡片我没有把对应的名称显示出来,这里就用该工具修改后,把所有卡片对应的名称列出来吧。

我的Rich8文件richman8.dat的MD5值是13a19e617b0ebeb16b7214f4ce63be64。如果是其他的发布版本,可能对应的偏移不同

下载文件Download

文件的Hash值:

  MD5 db7259dae55187c29599ec0e85a8ef15

SHA1 3a04160b9c25de7731abba6be25903d718709a4c

申明:所有只是为了研究学习,如果因为修改而导致的问题自己负责

添加修改器的代码下载,有兴趣的朋友可以下载:Code

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477