首页
社区
课程
招聘
未解决 [求助]关于数据地址问题
发表于: 2020-3-24 01:32 1642

未解决 [求助]关于数据地址问题

2020-3-24 01:32
1642
看了一些视频有讲局部变量是动态地址,是因为局部变量是存储在栈中的原因吗?
还有比如一些数据(比如游戏数据)是动态地址,可以通过一个基地址加偏移获得,比如[1111111]+10算出,
1111111是一个基地址,取出1111111中的数据再加上10就是某些数据的动态地址,这种动态地址如何用代码实现呢?
难道大部分的游戏数据都是这种方式得到一个动态地址吗?
                                     求解

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

最后于 2020-3-24 01:38 被恺因编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 399
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是的,因为储存在栈中,而栈会随着你调用call而发生改变,所以看起来像是动态的,尤其是现在的编译器对这里做了处理,例如vc6开始会对这里做填充CC(之前的版本没用过没看),vs会对每次的esp地址做改变,所以现在就更是动态的感觉了,以前的版本则不会,所以你可以用偏移的方法取出之前call里面的一些数据。
之所以改成动态地址个人感觉其实就是为了对抗,因为最早的游戏其实也是固定地址的,原来用游戏修改器的时候直接就搜索出来一个地址
2020-3-24 10:47
0
雪    币: 4057
活跃值: (312)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
那就是一个对象或者一个结构体,至于你说的[1111]+10,代码就是Struct.XXX,取结构体成员或者对象成员。有的结构体或者对象会嵌套多层,你OD或者CE里看到的就是[[111]+10]+22类似这样多层的,这个可以是全局也可以是局部,游戏怎么高兴怎么写。
最后于 2020-3-24 11:08 被Buu编辑 ,原因:
2020-3-24 11:06
0
雪    币: 3400
活跃值: (850)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
koop 是的,因为储存在栈中,而栈会随着你调用call而发生改变,所以看起来像是动态的,尤其是现在的编译器对这里做了处理,例如vc6开始会对这里做填充CC(之前的版本没用过没看),vs会对每次的esp地址做改 ...
意思是程序每次运行分配的栈空间不一样
2020-3-24 11:41
0
雪    币: 399
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
恺因 意思是程序每次运行分配的栈空间不一样
要看编译器,你可以用vs建立一个项目,看一下不就知道了
2020-3-24 21:26
0
雪    币: 3400
活跃值: (850)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
koop 要看编译器,你可以用vs建立一个项目,看一下不就知道了
嗯,谢谢了
2020-3-25 01:29
0
游客
登录 | 注册 方可回帖
返回
//