C++ - *(int**) адрес? Что здесь происходит?
Я просмотрел некоторый код, который в основном является хуком (инъекция DLL). В коде я обнаружил следующее:
int Address = 0x12345678; //Address of a memory location of target process
int *Pointer = *(int**) Address; //What happens here?
Таким образом, похоже, что 0x12345678 (адрес является лишь примером) является указателем. Таким образом, значение, которое мы хотим получить, хранится по адресу памяти 0x12345678. Правильно ли я догадываюсь, что происходит следующее:
-Cast Адрес int-указателя и разыменование его, чтобы получить значение, хранящееся в 0x12345678
-Считать значение по адресу памяти 0x12345678 как int-указатель тоже
Заранее большое спасибо и извините за мой плохой английский!
1 ответ
-Cast Адрес int-указателя и разыменование его, чтобы получить значение, хранящееся в 0x12345678
Нет, это бросает Address
на указатель на указатель на int. И разыменовывает его, чтобы получить указатель на int, хранящийся в 0x12345678
-Считать значение по адресу памяти 0x12345678 как int-указатель тоже
Да.