宁波快速建站模板,做网站 徐州,网站开发文档要求,河南工程学院网站建设这里使用之前分析出来的数据结构写一个简易的修改器。在写之前需要确认如下事情 一、如何取得对象在内存中位置 由于之前分析出来的两个变量gRichCardsTable、gRichDataInfo是全局的变量#xff0c;它们的偏移在每个发布版本中是确定的 我使用的版本偏移值#xff1a; gRichD… 这里使用之前分析出来的数据结构写一个简易的修改器。在写之前需要确认如下事情 一、如何取得对象在内存中位置 由于之前分析出来的两个变量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://www.cnblogs.com/Quincy/archive/2011/01/16/1936775.html