首页
社区
课程
招聘
[求助]地址问题
2020-3-25 23:01 4811

[求助]地址问题

2020-3-25 23:01
4811
请问:为什么有的游戏数据是动态地址却可以用一个静态地址加多层偏移表示?比如[[[111111]+10]+20]+30
想了想是不是数组(全局或者局部),数组中嵌套了一个数组中再嵌套一个数组-----数组(数组(数组)) 1111111是一个指针变量地址


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

收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 873
活跃值: (531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
monvvv 2020-3-25 23:07
2
0
一般游戏都会维护一个全局变量
雪    币: 3370
活跃值: (815)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
恺因 2020-3-25 23:12
3
0
monvvv 一般游戏都会维护一个全局变量
然后呢?
雪    币: 205
活跃值: (2569)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
yeyeshun 2 2020-3-26 08:39
4
0
我理解的是这样的伪代码:
struct A
{
  int nA;
  char* str;
}
struct B
{
  int nB;
  struct A* a;
}
struct C
{
  int nC;
  struct B* b;
}
struct C* c = 0;
void main()
{
  c = new struct C();
  c->b = new struct B();
  c->b->a = new struct A();
  c->b->a->str = new char[16];
}
c->b->a->str 这样的,就类似于你的[[[111111]+10]+20]+30。
雪    币: 182
活跃值: (576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
柒雪天尚 2020-3-26 08:42
5
0
yeyeshun 我理解的是这样的伪代码: struct A { int nA; char* str; } struct B { int nB; struct A* a; } st ...
又是要是用这种模式开发,得多出多少代码来?
雪    币: 205
活跃值: (2569)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
yeyeshun 2 2020-3-26 08:43
6
0
开发的话,使用这种的便于管理,反而会节省代码
雪    币: 3667
活跃值: (514)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
逻辑错误 1 2020-3-26 09:17
7
0
大多都是C++开发的, 找到类的指针以后, 其他的都是类里面的成员, 一般情况下游戏只要不更新, 偏移就不会变.
很多人都有过找ecx或者esi的经历, 就是在找类的指针, 回溯很多层才能找到, 然后根据指针, 一层层的剥开, 直到找到想要的数据.
雪    币: 3370
活跃值: (815)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
恺因 2020-3-26 11:25
8
0
逻辑错误 大多都是C++开发的, 找到类的指针以后, 其他的都是类里面的成员, 一般情况下游戏只要不更新, 偏移就不会变. 很多人都有过找ecx或者esi的经历, 就是在找类的指针, 回溯很多层才能找到, 然 ...
如何解释偏移有很多层呢?
雪    币: 83
活跃值: (1037)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
killpy 2 2020-3-26 14:02
9
0
有点意思
雪    币: 819
活跃值: (3469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
逆向爱好者 2023-3-29 20:02
10
0
偏移多是类多,层层嵌套渡河高级语言以对象编程的原则,地址动态,几秒变化一次,应该是游戏引擎为了反作弊搞的
游客
登录 | 注册 方可回帖
返回