
Сообщение от
aLarman
вообще гововря подобные вещи должны быть константными, т.е всегда используются постоянный оффсеты, правда CS быть может, имеют свою специфику
Вы кстати когда в CheatEngine искали адрес где хранится ХП, он в списке найденных был один?, или Вы взяли первый попавшийся
Нет, там было несколько адресов, методом "перебора" и просмотра результата я вычислил что это именно тот адрес, который мне нужен (правда именно этот адрес меняет количество ХП только визуально, но мне разницы нет что изменять для понимания)
Т.е. это динамический адрес я так понимаю. Кстати говоря, когда я через CheatEngine копирую этот адрес, у меня копируется вот это: client.dll+1206D8, вместо 0x098A06D8 (сейчас уже такой, сорри в том коде адрес от GTA San Andres, я и на её примере пытался разобраться). Заметил одну особенность, что адрес всегда заканчивается на "06D8".
Может вместо
C++ |
1
| WriteProcessMemory(hProcess, (LPVOID)[B]0x00B7CE50[/B], &data, 4, 0); |
|
нужно
C++ |
1
| WriteProcessMemory(hProcess, (LPVOID)[B]client.dll+1206D8[/B], &data, 4, 0); |
|
но компилятор так ругается..
Добавлено через 54 секунды

Сообщение от
aLarman
а это собсно, адрес переменной где хранится кол-во ХП персонажа

то есть структура такая:
есть процесс, у этого процесса есть PID (кстати я уже разобрался что это такое), по этому PIDу мы находим Название процесса если я правильно понял (hProcess это типа cs_strike.exe, правильно понимаю?) и в это окно в область памяти 0x00B7CE50 мы посылаем значения которые нужно изменить)
Схема такая:
Определить PID процесса -> Определить название процесса -> Записать или читать данные из определенной области памяти.
Но тогда я не понимаю, зачем вообще PID нужно узнавать, если можно явно указать что название cs_strike.exe и запросы посылать в него (хотя тут может быть изменено название и программа уже не работает)
Вообще спасибо вам большое, что вас заинтересовала эта тема и вы на неё ответили!