内存读与写取数据,指定进程读与写内存地址数据

需要用到的函数
3个 API函数
1: GetWindowThreadProcessId :获取进程ID
2:OpenProcess :获取进程句柄
3: ReadProcessMemory :读出指定进程 指定位置 的数据到缓冲区
4:WriteProcessMemory :写出指定数据 到进程的内存地址中
DWORD GetWindowThreadProcessId(
HWND hWnd, // 窗口句柄 由FindWindow获取
LPDWORD lpdwProcessId // 存放进程ID的 变量
);

HANDLE OpenProcess(
DWORD dwDesiredAccess, // PROCESS_VM_READ or PROCESS_VM_WRITE 访问权限
BOOL bInheritHandle, // 这个是继承标志 在这里 为false
DWORD dwProcessId // 进程ID 由GetWindowThreadProcessId 获取
);
BOOL ReadProcessMemory(
HANDLE hProcess, // 进程句柄 由OpenProcess函数获取
LPCVOID lpBaseAddress, // 要读出数据的地址:$47d814
LPVOID lpBuffer, // 用于存放读取数据的地址:sitNum
DWORD nSize, // 要读出的数据大小 4
LPDWORD lpNumberOfBytesRead // 读出数据的实际大小
);
WriteProcessMemory( HANDLE hProcess, // 进程句柄 由OpenProcess函数获取,进程打开的权限可能需要Winapi.Windows.PROCESS_ALL_ACCESS,才能写
LPCVOID lpBaseAddress, // 要写出数据的地址:$47d814
LPVOID lpBuffer, // 用于存放读取数据的地址:sitNum
DWORD nSize, // 要写出的数据大小 4
LPDWORD lpNumberOfBytesRead // 写出的数据
);

具体代码参考
//从程序读出棋盘数据 到数组里边
const GameName=‘窗口标题’
const sitNumBase= 16进制内存地址;
var
PidGame :DWORD; //用来保存进程ID
hGame :HWND; //用来保存游戏窗口句柄
readByte:DWORD; //用来保存 实际读取的字节数
ChessData:Array[1…8,1…25] of byte; //定义的一个棋盘数组
//4个基址号
var sitBase:array[0…3] of ^integer=(Pointer($0047A318),Pointer($0047AEF4),
Pointer($0047BAD0),Pointer($0047C6AC));

Function UpDataChess():boolean;
begin
//获取游戏窗口句柄
hGame:=Findwindow(nil,GameName);

//获取游戏进程 PID
windows.GetWindowThreadProcessId(hGame,PidGame) ;

//获取游戏进程句柄 hProcess:=windows.OpenProcess(windows.PROCESS_ALL_ACCESS,false,PidGame);

//读出当前坐位号 windows.ReadProcessMemory(hProcess,Pointer(sitNumBase),sitNumP,4,readByte);

//读出棋盘数据到数组 windows.ReadProcessMemory(hProcess,sitBase[sitNum],@ChessData[1][1],200,readByte);

//写出数据
WriteProcessMemory(hProcess,sitBase[sitNum],@ChessData[1][1],200,readByte);

//释放进程句柄 

result:=CloseHandle(Hprocess);

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值