Как узнать, является ли переменная в памяти указателем или нет?

Я ищу указатели на структуры в памяти программы, которые находятся на расстоянии 4 байт друг от друга, но количество может варьироваться. Я уверен, что после структур приходит какая-то другая переменная, которая не является указателем.

Я решил, что если я попытаюсь использовать эту следующую переменную в качестве указателя и применить к ней наибольшее смещение, которое может иметь структура, которую я ищу, GetProcessMemory(я делаю это в C++ btw) потерпит неудачу, и я буду знать, что это не то, что я ищу, и что «список» указателей на структуры, которые я ищу, заканчивается там.

Но это кажется ненадежным, так как может случиться, что следующая переменная будет иметь значение, указывающее на другую допустимую структуру, и GetProcessMemory не потерпит неудачу, поэтому я спрашиваю, есть ли лучший способ.

CheatEngline, кажется, делает это довольно безупречно,так что я упускаю?

Заранее спасибо.

2 ответа

  1. Указатели переводятся на адреса.

    Адреса-это числа, как и любое другое число.

    Можно увеличить вероятность того, что число является указателем, если известен допустимый диапазон адресов. Хотя нет никакой гарантии.

    В памяти нет атрибутов, которые обозначают назначение или тип, представленный расположениями памяти.

  2. Хорошо, я тут подумал.
    Это для функции, поэтому я скорее всего поставлю некоторые параметры (со значениями по умолчанию), такие как начальный mem addr, расстояние между vars указателя, max amount и max offset структуры. С их помощью я могу узнать точную, скажем, «длину» конструкции, где она начинается и общее представление о том, где она не закончится. Шансы найти то, что я не ищу, минимальны.

    Идея состоит в том, чтобы сделать hud для игры, которая в противном случае не позволит его (возможно, взломать, так как я никогда не использовал слишком много математики в играх раньше — это может быть интересно). Поэтому, возможно, я мог бы найти некоторые смещения к переменной с количеством структур, которые у меня есть, тогда не было бы никаких проблем.