查看單個文章
舊 2009-04-01, 11:34 AM   #7 (permalink)
eric10104
註冊會員
榮譽勳章

勳章總數0
UID - 320197
在線等級: 級別:1 | 在線時長:6小時 | 升級還需:6小時
註冊日期: 2009-03-14
文章: 7
精華: 0
現金: 13 金幣
資產: 13 金幣
預設

我已經大概知道編程 , 但是卻無法修改遊戲中的數值 , 請高手指正我哪邊錯誤了 ? 謝謝 !

程式可以運行 , 我在輸入 address 有加上16進位的 0x , value 這是修改直接要得值 ?

開啟時會叫出client.exe , client.exe會顯示 0x440004= 7474

代碼是外國高手幫忙的 , 我不知到哪邊錯誤 , 請版上高手幫幫忙 謝謝 ~

遊戲暫存器: 03740268

必須要先到球員編輯區,輸入暫存器位址,才有辦法更改

此為GM8和FPE修改法

這支程式卻讀不到內部的位址,不知到哪邊有錯誤?
====================================

首先 run MemoryEdit.exe
佢會 CreateProcess and run Client.exe
Client.exe 會 不斷 咁 print 會 int 既 address and value

之後 MemoryEdit.exe 會要你 input 個 address 你要 edit 既
個 address 可以 抄返 Client.exe Show 出 o黎 既
e.g. 010E9008 就 input 0x010E9008 <= 0x 開頭 hex
之後 要你 input 個 value e.g. input 8888

之後 等 5 秒

check 返 Client.exe
佢個 value 會 唔同左

=====================================


Client.exe

引用:
#include <windows.h>
#include <iostream>

int addr = 7474;

int main()
{
int i=0;

while(++i < 1000)
{
std::cout << &addr << " = " << addr << std::endl;
Sleep(1000);
}
return 0;
}
=====================================

MemoryEdit.exe

引用:
#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

HANDLE g_hProcess;
DWORD g_arList;
int iVal;

BOOL WriteMemory(DWORD dwAddr, DWORD dwValue)
{
return ::WriteProcessMemory(g_hProcess, (LPVOID)dwAddr, &dwValue, sizeof(DWORD), NULL);
}

int main()
{
char szFileName[] = "Client.exe";

STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi;
::CreateProcess(NULL, szFileName, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si,&pi);
cout << "Please enter the addr [0x1234567...]: ";
cin >> hex >> g_arList;
cout << "Please enter the value: ";
cin.clear();
cin >> dec >> iVal;
Sleep(5000);

CloseHandle(pi.hThread);
g_hProcess = pi.hProcess;

if(WriteMemory(g_arList, iVal))
cout << "Memory: " << g_arList << " [Written]\n";

CloseHandle(g_hProcess);
return 0;
}

此帖於 2009-04-01 01:28 PM 被 eric10104 編輯.
eric10104 目前離線  
送花文章: 2, 收花文章: 6 篇, 收花: 6 次
回覆時引用此帖
向 eric10104 送花的會員:
Living (2009-04-04)
感謝您發表一篇好文章