6.x86游戏实战-C++实现跨进程读写-通过基址读取人物状态标志位

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:5.x86游戏实战-CE定位基地址

上一个内容找出了人物状态标志位的基址,接下来就通过写C++代码来去读人物状态标志位的值

效果图:

代码:

// ConsoleApplication4.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include "Windows.h"

int main()
{
	/*
		PROCESS_ALL_ACCESS表示全部权限
		FALSE表示不继承,这个一般用不到,不用了解
		14384进程的Pid,详情看文章中的图
		h是进程句柄,句柄是用来代表一个进程的数字,由操作系统提供

		HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 14384); 这一句的意思是获取14384进程的所有权限,并把句柄放到h中
	*/
	//HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 14384);
	/*
		DWORD* 的意思是,* 表示当前的数据认定成内存地址,DWORD是4字节数字
		DWORD* 的意思是把xxx认定成内存地址,内存地址里的值是一个4字节数字
		(DWORD*)0xA107BC也就是把0xA107BC它当做内存地址来看待,0xA107BC内存地址里的值是一个4字节数字
	*/
	//DWORD* buffer = (DWORD*)0xA107BC;
	//DWORD ret;
	/*
		h要读取谁的内存
		buffer内存地址
		ret内存地址的数据
		4读取4个字节
		NULL没用
		&是取地址的意思,&ret的意思就是ret的内存地址
		ReadProcessMemory(h, buffer, &ret, 4, NULL); 这一句的意思是,从h的内存中的0x60BAA6A0位置开始读取4字节,放到ret它里面,如果ret的大小没有4字节会显示有问题或程序崩溃
	*/
	//ReadProcessMemory(h, buffer, &ret, 4, NULL);
	//printf("%d", ret);

	HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 15052);
	DWORD* buffer = (DWORD*)0xA107BC;
	DWORD ret;
	ReadProcessMemory(h, buffer, &ret, 4, NULL);
	//printf("%d", ret);
	buffer = (DWORD*)(ret + 0x60);
	ReadProcessMemory(h, buffer, &ret, 4, NULL);
	buffer = (DWORD*)(ret + 0x14c);
	ReadProcessMemory(h, buffer, &ret, 4, NULL);
	printf("人物状态标志:%d\n", ret);
}

 

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值