2.x86游戏实战-跨进程读取血量

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

本次游戏没法给

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

接下来会写C/C++代码,C/C++代码不是很难,然后为了快速掌握逆向这个技能,我不会写C/C++语言基础的教学,也不需要学,跟着下方写的代码直接抄,然后跟着文字描述理解一下代码实现的功能,就可以了,当后面抄的C/C++代码多了自然就会C/C++语言了(这样学会的C/C++会导致基础非常不扎实,如果不想浪费时间,那就等学会了逆向(逆向是思路并不是写代码,所以直接抄C/C++代码)再回头看C/C++基础)

上一个内容:1.x86游戏实战-认识CE

效果图:

首先打开Visual Studio 2022

然后选择单击下图红框,创建新项目

然后选择c++

然后选择控制台应用

然后设置项目名称、位置(意思是代码存放位置)、解决方案名

下图是为了展示项目名称与解决方案名称的区别,然后点创建

项目名称与解决方案名称的区别,解决方案这个概念它是用来概括项目的,多个项目组合起来就可以叫做一个解决方案,一个项目也可以叫解决方案,不理解也没事,不重要

项目创建好,如下图红框位置,它有一段代码,这段代码不重要

然后上一个内容中CE读取了游戏中的数据,这种操作叫做跨进程读取,那么这种操作怎么实现的?

涉及两个函数,OpenProcess 和 ReadProcessMemory

OpenProcess用来打开一个进程

ReadProcessMemory用来读取指定进程中的内存

在攻防对抗中,防的一方一般会给 OpenProcess 函数做拦截,让它返回一个无权限的句柄,后面会写如何提权 ,这句话看到这里可能不懂,看完下方的代码里写的文字就会懂了

需要的东西

Pid

测试读取的数据

代码:

然后有一个东西,鼠标单击 函数,然后按F1键

会打开函数的说明

下图的说明是中文的,也有可能是英文的,如果是英文的那就用浏览器的翻译工具进行网页翻译

然后下图红框,函数说明里会有这种[in] [out]这种东西,[in]的意思是我们给函数传递的东西,[out]的意思是给函数一个内存地址,然后函数会给这个内存地址里写东西,写的东西是什么就看看说明

// 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* buffer = (DWORD*)0x60BAA6A0;
	DWORD ret;
	/*
		h要读取谁的内存
		buffer内存地址
		ret内存地址的数据
		4读取4个字节
		NULL没用

		ReadProcessMemory(h, buffer, &ret, 4, NULL); 这一句的意思是,从h的内存中的0x60BAA6A0位置开始读取4字节,放到ret它里面,如果ret的大小没有4字节会显示有问题或程序崩溃
	*/
	ReadProcessMemory(h, buffer, &ret, 4, NULL);
	printf("%d", ret);
}

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值