中國式家長的作弊實作之利用c語言進行記憶體修改
首先的話,作者是個小白,還在努力學習之中,對于程式設計語言可以說是一知半解,
然後弄這樣一個部落格吧,分享一下自己的學習經曆,也希望能給一些新手一點幫助。
一開始就是我自己玩中國式家長,之前兩天肝了10個小時,覺得挺有意思的,然後現在不想玩了,
但是28塊錢買下來的遊戲,怎麼能白白閑置在這裡呢,于是就成了我的練手之作,
今天就拿他來祭天。
OK如果你玩過這個遊戲你就會發現這個遊戲的悟性可以說是非常重要了,是以作為初學者,我們當然要對他的悟性進行修改了。
我一開始先找到悟性,然後找出了他的基址
然後因為我找出來了,那我就直接上圖

不過真的是太久沒摸過ce了,這個悟性基址我找的是頭昏眼花。不過好在還是弄出來了
587B504 偏移 D4 88 1D0 8 318
知道基址了就很好弄下來了
然後打開我們的VC,因為我隻弄了一個功能,而且功能隻有5次偏移,是以我就寫一個5次偏移
#include <tchar.h>
#include "stdafx.h"
#include <Windows.h>
#include<iostream>
using namespace std;
int gameaddress = 0x587b504; //遊戲基址;
HANDLE gameprocess; //句柄類型 擷取
//5次偏移
int *get5point(int gameaddress,int p1,int p2,int p3,int p4,int p5)
{
int iBase, iP1, iP2,iP3,iP4,*iP5;
if (!ReadProcessMemory(gameprocess, (LPVOID)gameaddress, &iBase, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iBase + p1), &iP1, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iP1 + p2), &iP2, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iP2 + p3), &iP3, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iP3 + p4), &iP4, 4, NULL))
{
return NULL;
}
iP5=(int *)(iP4+p5);
return iP5;
}
//修改悟性
void wxxg()
{
int *pwx=get5point(gameaddress,0xD4,0x88,0x1D0,0x8,0x318);
float wx = 150;
cout<<pwx<<endl;
WriteProcessMemory(gameprocess, pwx,&wx, 4, NULL);
}
int _tmain(int argc, _TCHAR* argv[])
{
//擷取遊戲視窗所在程序的程序ID,也就是PID
HWND hWnd = FindWindow(NULL, TEXT("中國式家長"));
if (NULL == hWnd)
{
printf("查找視窗失敗\n");
return 0;
}
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd, &dwProcessId);
printf("程序ID:%d\n", dwProcessId);
//擷取程序句柄
gameprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
if (NULL == gameprocess)
{
printf("打開程序失敗\n");
return 0;
}
wxxg();
getchar();
return 0;
}
然後我在52的ID是 這是昵稱的昵稱