如何知道内存中的变量是否是指针?

如何知道内存中的变量是否是指针?

问题描述:

我正在寻找指向程序内存中结构的指针,它们相距4个字节,但数量可能有所不同。我非常肯定,在结构之后有一些其他变量不是指针。如何知道内存中的变量是否是指针?

我想如果我试图使用下一个变量作为指针,并将它应用到我正在寻找的结构的最高偏移量可以有,GetProcessMemory(我在C++ btw中执行此操作)会失败,我'知道这不是我正在寻找的东西,并且我正在寻找的结构指针的“列表”在那里结束。

但这似乎是不可靠的,因为它可能发生,下一个变量将有一个值指向另一个有效的结构和GetProcessMemory将失败,所以我问是否有更好的方法。

CheatEngline似乎做它非常完美,所以我缺少什么?

预先感谢您。

+2

有没有完全可靠的方法,只是启发式,诸如结构类型的对准,并用于堆和栈的地址范围。 – Barmar

+0

你可以使用'typeid(变量).name()'来获得类型 – Raindrop7

+0

@ Raindrop7否,你不能。 –

指针转换为地址。

地址是数字,就像任何其他数字一样。

您可以增加一个数是指针的可能性,如果你知道地址的有效范围。虽然没有保证。

有存储器中没有的属性,用于指定由所述存储位置所示的目的或类型。

好的,所以我一直在想。 这是一个函数,所以我最多会放一些参数(默认值),像一个开始mem addr,指针变量之间的距离,最大金额和结构的最大偏移量。通过这些我可以知道结构的确切的每个“长度”,它的起始位置以及它不会结束的一般概念。我找到我不寻找的东西的可能性很小。

的想法是做一个HUD的游戏,否则不会允许它(可能是黑客,因为我从来没有真正使用太多的数学中前场 - 它可以是有趣的)。所以,也许我可以通过结构数量找到一些偏移量,然后就不会有问题了。