大富翁8 修改器

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

大家好,欢迎来到IT知识分享网。大富翁8 修改器

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

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

由于之前分析出来的两个变量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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32730.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信