关于内存基址寻找有关问题(游戏修改器的编写)

关于内存基址寻找问题(游戏修改器的编写)
不知道这个问题放在这里讨论是否合适

就拿英雄无敌这个单机游戏来练习,修改其中的金钱之类数据。

delphi关于内存读写方面的代码是没问题的

不过内存当中存放四个字节单位的数据类型,我用byte接收跟用integer接收,数据不一样……两类型间区别是否在于它们所占用内存字节数的不同?

integer占用四个字节,比如它用

12   00   00   00

代表18这个整数,那   12   55   00   00类似这样的是多少整数?我试过修改成这样,变得非常大,想请教一下,这个换算规则是什么?如果我修改第三个字节的话,数据变得更大。……

最后还有个问题

游戏每次从新开启,这个数据点的内存位置便会发生变化,不知道如何确定其游戏基址,只要能确定基址的话,这个位置的变化就在固定的偏移量里。

另外再问一下

游戏打开后,我们用金山游侠这类工具找到的内存地址是相对游戏内存的,还是整个系统内存的???

应该不会是系统内存吧?没理由游戏每次打开都注定分配到这一块系统内存。

那如果这样的话,这两个内存地址是否可以相互换算?就是说如何将我们查找到的内存地址转换成系统全局的内存地址呢?

还有

我不知道怎么称呼这个一直变化的内存地址……

我每次重新打开游戏,金钱的地址都在变化,不过不会出现像红色警报那样多个地址,他符合的内存地址只有一处。

------解决方案--------------------
12 00 00 00
代表18这个整数,那 12 55 00 00类似这样的是多少整数?我试过修改成这样,变得非常大,想请教一下,这个换算规则是什么?如果我修改第三个字节的话,数据变得更大。……

就这个问题而言,应该是这样(我的认识):
因为在内存中低字节存储的是数值的低位,高字节存储的是高位,也就是说:如果这四个字节是这样(12 55 01 02),则它应该是02015512这样的排列,所以你把它改为00 00 12 55之后就是55 12,换算为10进制就是21778