[byte] In base memory address 我需要使用哪种数据类型?
Which data type I need to use for [byte] In base memory address?
我正在开发一个程序 "hacks" GTA:圣安地列斯。
我正在使用 WriteProcessMemory
函数将数据写入特定项目的基本内存,并 FindWindow
找到 GTA:圣安德烈亚斯 Window.
我的问题是第二个和第三个WriteProcessMemory
不工作,它不影响游戏,什么都不做。
我看到了 here 我需要的基本内存地址和数据类型,你可以向下滚动到 Cheats 选项并查看基本内存和数据类型[byte] 他们需要。
示例:
#include <iostream>
#include <Windows.h>
using namespace std;
void GameHack(LPCSTR winname)
{
int newValue = 125555;
byte bytes = 1;
HWND GameWindow = FindWindowA(NULL, winname);
if (GameWindow == NULL) {
auto errorcode = GetLastError();
std::cout << "Failed to FindWindow & Error Code: " << errorcode;
Sleep(3000);
exit(1);
}
else {
DWORD procID;
GetWindowThreadProcessId(GameWindow, &procID);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);
if (handle == NULL) { // compare handle to NULL, not procID to FALSE
auto errorcode = GetLastError(); // 1st thing to do
std::cout << "procID Failed & Error Code: " << errorcode;
Sleep(3000);
exit(1);
}
else {
int option;
cout << "\n 1. Money Booster!\n 2. Weapon Set 1\n 3. Max Muscle\n\n";
cout << " Choose One Option You Want To Do: "; cin >> option;
if (option == 1) {
WriteProcessMemory(handle, (LPVOID)0x00C0F188, &newValue, sizeof(newValue), NULL);
}
if (option == 2) {
WriteProcessMemory(handle, (LPVOID)0x969130, &bytes, sizeof(bytes), NULL);
}
if (option == 3) {
WriteProcessMemory(handle, (LPVOID)0x969155, &bytes, sizeof(bytes), NULL);
}
CloseHandle(handle);
}
}
}
int main()
{
GameHack("GTA: San Andreas");
return 0;
}
我想为我的角色添加 武器组 1 和 Max Muscle。
为此我需要使用哪种数据类型和值?
您链接的网站列出了您需要用作字节的数据类型,您正在这样做。如果您的第一个 WriteProcessMemory 工作但第二个 2 不工作,则地址已更改。
您的第一个汇款地址列为 0x00C0F188,与网站上列出的地址不同,但它有效。
如果您不得不使用不同的地址来获取资金,那么您很可能会为所有变量使用不同的地址。
您需要先找到您的游戏版本并将其与该指南进行比较。无论哪种方式,最好的解决方案始终是自己反转地址,而不是依赖可能已过时的其他人的工作。
我正在开发一个程序 "hacks" GTA:圣安地列斯。
我正在使用 WriteProcessMemory
函数将数据写入特定项目的基本内存,并 FindWindow
找到 GTA:圣安德烈亚斯 Window.
我的问题是第二个和第三个WriteProcessMemory
不工作,它不影响游戏,什么都不做。
我看到了 here 我需要的基本内存地址和数据类型,你可以向下滚动到 Cheats 选项并查看基本内存和数据类型[byte] 他们需要。
示例:
#include <iostream>
#include <Windows.h>
using namespace std;
void GameHack(LPCSTR winname)
{
int newValue = 125555;
byte bytes = 1;
HWND GameWindow = FindWindowA(NULL, winname);
if (GameWindow == NULL) {
auto errorcode = GetLastError();
std::cout << "Failed to FindWindow & Error Code: " << errorcode;
Sleep(3000);
exit(1);
}
else {
DWORD procID;
GetWindowThreadProcessId(GameWindow, &procID);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);
if (handle == NULL) { // compare handle to NULL, not procID to FALSE
auto errorcode = GetLastError(); // 1st thing to do
std::cout << "procID Failed & Error Code: " << errorcode;
Sleep(3000);
exit(1);
}
else {
int option;
cout << "\n 1. Money Booster!\n 2. Weapon Set 1\n 3. Max Muscle\n\n";
cout << " Choose One Option You Want To Do: "; cin >> option;
if (option == 1) {
WriteProcessMemory(handle, (LPVOID)0x00C0F188, &newValue, sizeof(newValue), NULL);
}
if (option == 2) {
WriteProcessMemory(handle, (LPVOID)0x969130, &bytes, sizeof(bytes), NULL);
}
if (option == 3) {
WriteProcessMemory(handle, (LPVOID)0x969155, &bytes, sizeof(bytes), NULL);
}
CloseHandle(handle);
}
}
}
int main()
{
GameHack("GTA: San Andreas");
return 0;
}
我想为我的角色添加 武器组 1 和 Max Muscle。
为此我需要使用哪种数据类型和值?
您链接的网站列出了您需要用作字节的数据类型,您正在这样做。如果您的第一个 WriteProcessMemory 工作但第二个 2 不工作,则地址已更改。
您的第一个汇款地址列为 0x00C0F188,与网站上列出的地址不同,但它有效。
如果您不得不使用不同的地址来获取资金,那么您很可能会为所有变量使用不同的地址。
您需要先找到您的游戏版本并将其与该指南进行比较。无论哪种方式,最好的解决方案始终是自己反转地址,而不是依赖可能已过时的其他人的工作。