首页
社区
课程
招聘
[求助]常说道游戏的基址 偏移 我是菜鸟游戏不理解
发表于: 2014-9-26 10:26 5596

[求助]常说道游戏的基址 偏移 我是菜鸟游戏不理解

2014-9-26 10:26
5596
单纯的说 基址,偏移 这些我懂,但是我还是不理解, 基址 和偏移对应的高级语言是什么

在高级语言里面 变量 找到它的指针不就可以了吗,为什么要用基址和偏移啊

我问的 很菜

希望有高手举例子 讲解下 ,谢啦

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 6779
活跃值: (1134)
能力值: ( LV12,RANK:782 )
在线值:
发帖
回帖
粉丝
2
高级语言与汇编的对应,例如高级语言的类,数组,一些数据结构。
2014-9-26 10:46
0
雪    币: 88
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
也就是  游戏的基址 就是数组的基址吗,基址 + 偏移就是数组元素吗

那游戏所说的一级偏移 二级偏移就是 多为数组 吧
2014-9-26 11:00
0
雪    币: 459
活跃值: (398)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
4
struct Role
{
   int Blood;
   int Magic;
   byte deadFlag;
}

Role *_Role
_Role 地址就是基址
_Role + 0x4 就是指向Magic 这个0x4 就是偏移
希望有帮助
2014-9-26 11:00
0
雪    币: 88
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ok 你这么一说 我就理解很多了,我用ce找到游戏的血量,但是每次重启 后 ,这个地址就变了,说明我找错了吗
2014-9-26 11:15
0
雪    币: 345
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
基址:一组数据线性的存储在一段内存中,这段内存的地址就是基址,也是第一个数据的地址
偏移:任何结构在内存中的操作最终都没变成基址+偏移的方式去读取,
假如有三个整型数据,a,b,c线性存储在x内存段,那么a的地址和x地址相等(x + 0),b的地址等于x + 4, c的地址等于x + 8

动态的基址:
因为有的内存是动态分配的,所以会导致基址动态,但是程序中有需要使用,所以一般会有一个静态变量来存储这个动态的基址~ 找基址的关键点就是通过一个固定的的方式找到这个基址!可以是二进制对比,也可以是找到这个静态变量~ 纯手打!
2014-9-26 12:05
0
雪    币: 507
活跃值: (120)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
地址改变是正常的,因为每次都会在内存中改变的。所以应该去找游戏的call,而不是单次打开游戏中找到的地址。
2014-9-26 12:08
0
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
二楼正解。
2014-9-26 12:30
0
游客
登录 | 注册 方可回帖
返回
//