首页
社区
课程
招聘
未解决 [求助]地址问题
发表于: 2020-3-25 23:01 4981

未解决 [求助]地址问题

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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 873
活跃值: (531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
一般游戏都会维护一个全局变量
2020-3-25 23:07
0
雪    币: 3400
活跃值: (850)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
monvvv 一般游戏都会维护一个全局变量
然后呢?
2020-3-25 23:12
0
雪    币: 901
活跃值: (3560)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
4
我理解的是这样的伪代码:
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。
2020-3-26 08:39
0
雪    币: 181
活跃值: (636)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
yeyeshun 我理解的是这样的伪代码: struct A { int nA; char* str; } struct B { int nB; struct A* a; } st ...
又是要是用这种模式开发,得多出多少代码来?
2020-3-26 08:42
0
雪    币: 901
活跃值: (3560)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
6
开发的话,使用这种的便于管理,反而会节省代码
2020-3-26 08:43
0
雪    币: 3725
活跃值: (629)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
大多都是C++开发的, 找到类的指针以后, 其他的都是类里面的成员, 一般情况下游戏只要不更新, 偏移就不会变.
很多人都有过找ecx或者esi的经历, 就是在找类的指针, 回溯很多层才能找到, 然后根据指针, 一层层的剥开, 直到找到想要的数据.
2020-3-26 09:17
0
雪    币: 3400
活跃值: (850)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
逻辑错误 大多都是C++开发的, 找到类的指针以后, 其他的都是类里面的成员, 一般情况下游戏只要不更新, 偏移就不会变. 很多人都有过找ecx或者esi的经历, 就是在找类的指针, 回溯很多层才能找到, 然 ...
如何解释偏移有很多层呢?
2020-3-26 11:25
0
雪    币: 83
活跃值: (1092)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
有点意思
2020-3-26 14:02
0
雪    币: 1659
活跃值: (4758)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
偏移多是类多,层层嵌套渡河高级语言以对象编程的原则,地址动态,几秒变化一次,应该是游戏引擎为了反作弊搞的
2023-3-29 20:02
0
游客
登录 | 注册 方可回帖
返回
//