с помощью чит энжн используют термин, как статический оффсет. Тоесть это действительно так работает? Что каждый каждый при загрузке программы в память, некоторые данные загружаются всегда по одному оффсету?
Не совсем. Адрес самой программы разный. Стат. офсет (raw) — это просто смещение в файле. Соотв. при нахождении адреса самой программы (модуля), дальше можно адресоваться как и в обычном файле: kernel32.dll+34FA В данном случае, kernel32.dll адрес неизвестен, он всегда разный. Однако после его вычисления, 34FA уже является статическим, и всегда будет указывать на одно и то же место.
Аллокация просто привязана к базовому объекту который находится в памяти процесса, и создаётся компилятором как cave при самой первой иниализации туда обычно падают указатели к которым потом уже подсасываются другие объекты при аллокации. Так что объекты создаются в динамической памяти на рут у них всегда находится в памяти самого процесса.
Обсуждают сегодня