но если ты думаешь что можно пойти и сразу учить WinAPI ничего не понимая в C++, то это не так. это будет не кодинг и не написание читов, а простой "пастинг". свой код ты без знаний C++ не напишешь, это база, ты не будешь способен понять какое-либо API без понимания языка который используешь.
игра на которую ты будешь писать чит будет являться процессом, процессы создаёт операционная система (в этом случае Windows), у Windows имеется своё API для разработчиков и именно это API ты и будешь использовать. WinAPI предоставляет тебе абсолютно всё что нужно для работы с системой в целом, в него входит и тот функционал что ты описал - чтение памяти любых процессов (
), рендеринг так же можно сделать на основе WinAPI (wingdi).
нет, работа с оффсетами не относится напрямую к WinAPI. оффсет, если объяснять на пальцах, это смещение определённого поля или элемента данных внутри блока памяти. держи пример:
namespace offsets
{
namespace player
{
constexpr int bullets_shot = 0x0;
constexpr int health = 0x4;
constexpr int max_health = 0x8;
}
}
struct Player // `блок памяти` Player который содержит `элементы`
{
// Размер `int` составляет 4 байта
int bullets_shot = 12; // оффсет 0 (0x0) (начало структуры, первая переменная имеет 0 оффсет.)
int health = 136; // оффсет 4 (0x4) (прибавился размер типа предыдущей переменной `bullets_shot` в байтах)
int max_health = 200; // оффсет 8 (0x8) (прибавился размер типа предыдущей переменной `health` в байтах)
};
int main()
{
Player player;
// Эта часть может показаться трудной, но ты легко в ней разберешься
// после того как поймёшь устройство работы с указателями.
int* health_ptr = reinterpret_cast<int*>(reinterpret_cast<char*>(&player) + offsets::player::health);
int player_health = *health_ptr;
std::cout << "Health: " << player_health << std::endl; // Health: 136
}
и на всякий случай держи интересную для новичка (имхо) аналогию:
у тебя есть книга на 500 страниц, ты начинаешь читать книгу с первой страницы. представь, что самая интересная глава начинается на 200-й странице. если бы книга была структурой данных в памяти, то "начало книги" — это начальный адрес этой структуры, а "200-я страница" - это как раз оффсет который поможет тебе быстро найти нужную страницу при этом не перелистывая всю книгу с первой
надеюсь достаточно доступно объяснил, удачи в обучении!