游戏生化危机4老版本 修改器C++代码最新(游戏名字是biohazard 4)
程序运行展示结果
使用CE获取数据基本地址
这里不做过多介绍,网上很多教程
导入到C++ 控制台获取修改游戏血条、金币、子弹
代码如下(原创代码)
#include <iostream>
#include <string>
#include <Windows.h>
#include <Psapi.h>
using namespace std;
class CSHWJ
{
private:
DWORD_PTR base_address = 0x00400000;
HANDLE hd;
public:
CSHWJ() {
}
bool findgame()
{
HWND hw = FindWindowA(0, "biohazard 4");
DWORD id;
if (hw == 0)return false;
GetWindowThreadProcessId(hw, &id);
hd = OpenProcess(PROCESS_ALL_ACCESS, false, id);
if (hd == 0)return false;
return true;
}
bool zidan_get(WORD *num)
{
bool ool;
DWORD Addr = base_address + 0x2FE2C4C;
WORD ret;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(DWORD), 0);
if (!ool) { return false; }
Addr += 0x8;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &ret, sizeof(WORD), 0);
if (!ool) { return false; }
(*num) = ret / 8;
return true;
}
bool zidan_set(WORD *num)
{
bool ool;
if (*num > 500)
{
*num = -1;
return true;
}
if (*num < 0)
{
*num = -1;
return true;
}
*num = (*num) * 8;
DWORD Addr = base_address + 0x2FE2C4C;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(DWORD), 0);
if (!ool) { return false; }
Addr += 0x8;
ool = WriteProcessMemory(hd, (LPVOID)Addr, num, sizeof(WORD), 0);
if (!ool) { return true; }
return true;
}
///
bool jinbi_get(DWORD *num)
{
bool ool;
DWORD Addr = base_address + 0x2FE8E70;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(DWORD), 0);
if (!ool) { return false; }
*num = Addr;
return true;
}
bool jinbi_set(DWORD *num)
{
bool ool;
if (*num > 20000000)
{
*num = -1;
return true;
}
if (*num <0)
{
*num = -1;
return true;
}
DWORD Addr = base_address + 0x2FE8E70;
ool = WriteProcessMemory(hd, (LPVOID)Addr, num, sizeof(DWORD), 0);
if (!ool) { return false; }
return true;
}
//xuetiao MAX 0x950
bool xuetiao_get(WORD *num)
{
bool ool;
DWORD Addr = base_address + 0x2FE8E7A;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(WORD), 0);
if (!ool) { return false; }
*num = Addr;
return true;
}
bool xuetiao_set(WORD *num)
{
bool ool;
if (*num > 0x950)
{
*num = -1;
return true;
}
if (*num <0x10)
{
*num = -1;
return true;
}
DWORD Addr = base_address + 0x2FE8E7A;
ool = WriteProcessMemory(hd, (LPVOID)Addr, num, sizeof(WORD), 0);
if (!ool) { return false; }
return true;
}
bool xuetiao2_get(WORD *num)
{
bool ool;
DWORD Addr = base_address + 0x61E658;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(DWORD), 0);
if (!ool) { return false; }
Addr += 0x5f8e;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(WORD), 0);
if (!ool) { return false; }
*num = Addr;
return true;
}
bool xuetiao2_set(WORD *num)
{
bool ool;
if (*num > 0x950)
{
*num = -1;
return true;
}
if (*num <0x10)
{
*num = -1;
return true;
}
DWORD Addr = base_address + 0x61E658;
ool = ReadProcessMemory(hd, (LPCVOID)Addr, &Addr, sizeof(DWORD), 0);
if (!ool) { return false; }
Addr += 0x5f8e;
ool = WriteProcessMemory(hd, (LPVOID)Addr, num, sizeof(WORD), 0);
if (!ool) { return false; }
return true;
}
};
int main()
{
CSHWJ game;
WORD zidan_num = 0;
DWORD jinbi_num = 0;
WORD xuetiao_num = 0, xuetiao2_num = 0;
float xuetiao_f, xuetiao2_f;
char str[50] = { 0 };
bool tf = true;
system("mode con: cols=90 lines=1");
system("color 1F");
system("title gameshow");
while (true)
{
tf = game.jinbi_get(&jinbi_num);
tf = game.xuetiao_get(&xuetiao_num);
tf = game.xuetiao2_get(&xuetiao2_num);
tf = game.zidan_get(&zidan_num);
xuetiao_f = xuetiao_num;
xuetiao2_f = xuetiao2_num;
str[0] = 0;
if (!tf) {
system("cls");
strcpy(str, ".游戏没有运行");
jinbi_num = 0, xuetiao_num = 0, zidan_num = 0;
game.findgame();
}
if (str[0] != 0) {
printf("%s\r",str);
} else {
system("cls");
printf("| 金币:%d, 男主角血条余:%.03f%,女主角血条:%.03f%, 当前子弹: %d | me:talk...",
jinbi_num, (xuetiao_f/0x950)*100, (xuetiao2_f / 0x4B0) * 100, zidan_num);
zidan_num = 0xFF;
xuetiao_num = 0x950;
xuetiao2_num = 0x4B0;
jinbi_num = 99999;
game.jinbi_set(&jinbi_num);
game.zidan_set(&zidan_num);
game.xuetiao_set(&xuetiao_num);
game.xuetiao2_set(&xuetiao2_num);
}
Sleep(100);
}
getchar();
return 0;
}