C ++ - * (int **) адрес? Что здесь происходит? - PullRequest
0 голосов
/ 05 мая 2018

Я просмотрел некоторый код, который в основном является хуком (инъекция 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 Ответ

0 голосов
/ 05 мая 2018

-Cast Адрес int-указателя и разыменование его, чтобы получить значение, хранящееся в 0x12345678

Нет. Он преобразует Address в указатель на указатель на int . И разыменовывает его, чтобы получить указатель на int , хранящийся в 0x12345678

- Обработать значение по адресу памяти 0x12345678 как int-указатель

Да.

...