7.x86游戏实战-C++实现跨进程读写-跨进程写内存

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

本次游戏没法给

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

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

上一个内容通过基址得到了人物状态标志,这种操作属于读取,既然有读取那就有写入,所以本次来搞写入,本次通过找坐标改坐标实现瞬移来学习跨进程写数据。

这里有一件事,代码(c/c++代码)中用的那些函数(函数也叫api)怎么知道的?怎么就知道它能这样用?怎么知道有这种东西?

比如之前的 OpenProcess函数、ReadProcessMemory函数,怎么知道的这俩函数?

这都是老师讲的,逆向会常用OpenProcess、ReadProcessMemory这两个函数(当然不止这俩),这俩函数是Windows系统提供,自己找是真找不到,写这些字是为了那些钻牛角尖的,不要再钻了,我代码里写什么就学什么,否则其它的函数你就算知道了,也可能不知道怎么玩,纯浪废时间

Spy++

使用OpenProcess函数时要写一个pid,这个pid游戏重启、操作系统重启都会发送改变,每次都要找它的pid,有一个函数可以获取pid,这个函数需要Spy++里的一点东西,如下图打开Spy++

使用

找坐标

首先打开CE并附加游戏,游戏中小地图附近会有坐标信息(有些游戏没有,后面会写没有的怎么办)

如上图坐标现在是240,143,界面上显示的是整数,但它实际上是小数,很少有游戏坐标数据用整数,然后,如下图使用单浮点类型(为什么用单浮点?因为经验,也有的游戏会用双浮点,如果不知道用单浮点还是双浮点那就这俩都试一试,试完就知道用哪个了(错误的会找不到想要的数据),优先使用单浮点),来扫描内存,然后扫描类型是值介于...两者之间,游戏中坐标在窗口中看到的是100,它实际上可能是101、106、96这样的(所以这种找法不好,后面会有其它方式找坐标,只能做入门来用)

然后首次扫描,找到14511个数据

然后移动角色更改坐标

再次扫描,然后就剩下18个

然后把这些全部添加到下方列表中

然后再选中一半,然后鼠标放到选中的数据上如下图右击选择数值,把数据修改一下,如果把坐标修改了游戏中会有反应

把数据修改为50,然后游戏中没有反应,这说明坐标数据并不在这些数据中

然后选择剩下的数据做上方的操作

修改成60之后游戏有了反应(会瞬移)

然后现在还是有很多数据,具体哪个是坐标还不知道,然后先把这些改了没反应的给删除

然后再选一半改数据,这里改之前移动一下角色,让它恢复一下坐标(网络游戏本地改坐标没用,移动一下(发送数据包)就会恢复)

最终发现了两个,一个是人物头顶名字的坐标,一个是人物坐标

找到坐标之后使用c++代码对它们做出修改

代码:

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

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

int main()
{
	/*
		FindWindowA函数通过窗口类和标题获取窗口句柄
		""是从Spy++中类里复制来的
		NULL表示啥也没有
	*/
	HWND hwd = FindWindowA("", NULL);
	DWORD pid;
	// 根据窗口句柄获取进程pid,pid也就是线程id
	GetWindowThreadProcessId(hwd, &pid);
	HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
	DWORD* address = (DWORD*)0x457A555C;
	float ret = 60;
	/*
		h进程句柄
		address要修改的内存地址,或者说修改什么内存地址里存放的值
		ret意思是把address(457A555C)地址的值修改成ret的值
		NULL不重要
	*/
	WriteProcessMemory(h, address, &ret, 4, NULL);

	address = (DWORD*)0x457A5544;
	ret = 60;
	WriteProcessMemory(h, address, &ret, 4, NULL);



	//跨进程读内存();
}

void 跨进程读内存() {
	/*
	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);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/765325.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

试用笔记之-汇通周易(易经)字典软件

首先下载汇通周易字典软件 汇通周易(易经)字典软件 http://www.htsoft.com.cn/download/htzhouyi.rar 解压安装后&#xff0c;桌面图标 双击这个汇通周易字典图标

【AHK V2】 定时刷新窗口中的控件内容

在AutoHotkey v2 中设计GUI窗口,窗口中有个文本框,可以定时刷新内容。 时间周期可以通过窗口中的 下拉框来设定。 /************************************************************************* @description * @file 控件自动更新.ahk* @author sunwind1576157* @date 2024…

【信息系统项目管理师】18年~23年案例概念型知识

文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…

如何在Python中实现一个简单的爬虫程序

如何在Python中实现一个简单的爬虫程序 随着互联网的发展&#xff0c;数据已成为当今社会最宝贵的资源之一。而爬虫程序则成为了获取互联网数据的重要工具之一。本文将介绍如何在Python中实现一个简单的爬虫程序&#xff0c;并提供具体的代码示例。 确定目标网站 在开始编写爬…

数组-移除元素

移除元素 移除元素&#xff08;leetcode27&#xff09; var removeElement function(nums, val) {const n nums.length;let left 0;for (let right 0; right < n; right) {if (nums[right] ! val) {nums[left] nums[right];left;}}return left; };删除有序数组中的重复…

236、二叉树的最近公共祖先

前提&#xff1a; 所有 Node.val 互不相同 。p ! qp 和 q 均存在于给定的二叉树中。 代码如下&#xff1a; class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root q || root p || root NULL) return root;TreeN…

代码随想录第41天|动态规划

322. 零钱兑换 dp[j] : 最小硬币数量, j 为金额(相当于背包空间)递推公式 : dp[j] min(dp[j - coins[i]] 1, dp[j])初始化: 需要一个最大值, 避免覆盖, dp[0] 0遍历顺序: 钱币有序无序不影响, 因为求解最小个数, 结果相同(先遍历物品后背包, 先背包后物品都可) class Solut…

构造,析构,拷贝【类和对象(中)】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

Mysql和ES使用汇总

一、mysql和ES在业务上的配合使用 一般使用时使用ES 中存储全文检索的关键字与获取的商品详情的id&#xff0c;通过ES查询获取查询商品的列表中展示的数据&#xff0c;通过展示id 操作去获取展示商品的所有信息。mysql根据id去查询数据库数据是很快的&#xff1b; 为什么ES一般…

Linux高并发服务器开发(九)Tcp状态转移和IO多路复用

文章目录 0 包裹函数1 多进程服务器流程代码 2 多线程服务器3 TCP状态转移半关闭心跳包 4 端口复用5 IO多路复用技术高并发服务器 6 select代码总结 7 POLLAPI代码poll相对select的优缺点 8 epoll&#xff08;重点&#xff09;API监听管道代码EPOLL 高并发服务器 9 Epoll的两种…

真的假不了,假的真不了

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 最近&#xff0c;17岁的中专生姜萍参加阿里巴巴 2024 年的全球数学竞赛&#xff0c;取得了 12 名的好成绩&#xff0c;一时间在网上沸腾不止。 从最开始的“数学天才”&#xff0c;到被质疑&#xff…

YOLO-V2

一、V2版本细节升级 1、YOLO-V2&#xff1a; 更快&#xff01;更强 1.1 做的改进内容 1. YOLO-V2-Batch Normalization V2版本舍弃Dropout&#xff0c;卷积后每一层全部加入Batch Normalization网络的每一层的输入都做了归一化&#xff0c;收敛相对更容易经过Batch Norma…

【动态规划 前缀和】2478. 完美分割的方案数

本文涉及知识点 划分型dp 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode 2478. 完美分割的方案数 给你一个字符串 s &#xff0c;每个字符是数字 ‘1’ 到 ‘9’ &#xff0c;再给你两个整数 k 和 minLength 。 如…

A股站不稳3000点让人稀罕不已啊

今天的A股&#xff0c;让人稀罕不已&#xff0c;你知道是为什么吗&#xff1f;盘面出现2个重要信号&#xff0c;一起来看看&#xff1a; 1、今天两市冲了下3000点&#xff0c;第一个主题炒作的热点终于出现了&#xff0c;税改方向的行情发酵&#xff0c;并带动着其他改革相关方…

某某市信息科技学业水平测试软件打开加载失败逆向分析(笔记)

引言&#xff1a;笔者在工作过程中&#xff0c;用户上报某某市信息科技学业水平测试软件在云电脑上打开初始化的情况下出现了加载和绑定机器失败的问题。一般情况下&#xff0c;在实体机上用户进行登录后&#xff0c;用户的账号信息跟主机的机器码进行绑定然后保存到配置文件&a…

时间复利效应才是人生的催化剂

在追求成功的道路上&#xff0c;许多人都在寻找捷径。然而&#xff0c;真正的捷径并非不劳而获的幻想&#xff0c;而是通过长期坚持在某一领域深耕细作&#xff0c;享受时间复利效应带来的巨大收益。本文将探讨如何选择合适的领域并长期坚持下去&#xff0c;以实现成功。 时间…

作业7.2

用结构体数组以及函数完成: 录入你要增加的几个学生&#xff0c;之后输出所有的学生信息 删除你要删除的第几个学生&#xff0c;并打印所有的学生信息 修改你要修改的第几个学生&#xff0c;并打印所有的学生信息 查找你要查找的第几个学生&#xff0c;并打印该的学生信息 1 /*…

经典的卷积神经网络模型 - ResNet

经典的卷积神经网络模型 - ResNet flyfish 2015年&#xff0c;何恺明&#xff08;Kaiming He&#xff09;等人在论文《Deep Residual Learning for Image Recognition》中提出了ResNet&#xff08;Residual Network&#xff0c;残差网络&#xff09;。在当时&#xff0c;随着…

搜狐新闻HarmonyOS版本 push 推送开发

背景 搜狐新闻作为HarmonyOS的合作伙伴&#xff0c;于2023年12月成功上架鸿蒙单框架应用市场&#xff0c;成为首批鸿蒙应用矩阵的一员。 新闻类推送作为应用的重要组成部分&#xff0c;在二期规划中&#xff0c;我们将推送功能列为核心功能模块。本文将推送集成过程中的步骤和…

360的chromesafe64.dll动态链接库导致chrome和edge浏览器闪退崩溃关闭

在chrome或edge浏览器中打开特定的一些网页会导致浏览器闪退关闭 这是windows系统记录的报错日志 chrome报错日志 edge报错日志 日志指向的就是chromesafe64.dll这个动态库 然后用everything搜索发现原来在360安装目录下 360安装目录下的chromesafe64.dll文件 为什么360中的…