gpt4 book ai didi

c++ - 这是哪个标准容器行为?

转载 作者:太空狗 更新时间:2023-10-29 23:06:27 25 4
gpt4 key购买 nike

我正在尝试“破解”一款使用 Visual Studio 2005(需要 MSVCR80.dll 才能玩)编译的游戏(红色警戒 3,闭源..),

我尝试制作一个程序来显示我的对手的单位列表。至于那个,我首先需要找到一个指向我自己的列表的(静态)指针,我可以在单人游戏中这样做。

我有一些问题,因为我无法弄清楚我的静态指针是否真的指向我想要的。

我注意到了这种行为:(通过查看 add_unit 代码更改了哪些地址):

  • 如果一个单元还没有被 build ,为它创建一个新地址(随机?)并将值设置为 1(该类型的单元数量),但所有其他地址对于之前添加的单元保持不变,所以如果一个类型 A 的单元的地址为 0x12345678,它表明有多少个类型 A 的单元,那么它不会改变并且在整个游戏 session 中保持可访问。

所以其他地址没有失效之类的?

这是添加的地址示例,突出显示的是第一个添加的地址:

什么类型的 std::container 可以用于此目的?它肯定不是 vector ,因为 vector 是否会在插入新元素时使所有其他地址无效?


编辑/更新:至于现在我已经能够重建这个结构:

struct UnitsInfo
{
DWORD * someptr_1_to_other_UnitsInfo_struct;
DWORD * someptr_2_to_other_UnitsInfo_struct;
DWORD * someptr_3_to_other_UnitsInfo_struct;
int unkown_1;
unsigned int Type;
unsigned int Amount;
};

和 some_ptr 东西指向所有其他单元地址,我需要找出它是如何工作的。然后我可以高效地创建一切。

最佳答案

似乎是升序地址。这看起来像是通过分配器将东西添加到任何容器中。我猜是侵入式链表,其中对象位于某种分配器上。

希望对您有所帮助。

关于c++ - 这是哪个标准容器行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15702268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com