当前位置: 首页 > news >正文

32.x86游戏实战-使用物品call

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

本次游戏没法给

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

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3 提取码:6tw3 复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:31.x86游戏实战-使用物品call

封装上一个内容里写的代码,也就是下方的代码

pushad
push object
mov ecx, 0x1A5FB24
mov ecx, [ecx]
mov eax, 0x7B9130
call eax
popad

然后打开之前MFCdll的项目,最后一次写代码在24.x86游戏实战-血量与封装人物属性,然后新加一个按钮如下图

然后双击下图红框

双击完就创建了使用物品按钮的点击事件处理函数,如下图红框

然后开始写使用物品的代码,首先写下图红框的内容

然后右击函数名,然后选择下图红框的选项

然后它的内容

写完代码使用注入器,注入到游戏中

然后点击使用物品,游戏里就会使用物品了,游戏效果图不能贴出来,自行脑补一下

DXXDlg.cpp文件的修改:新加 OnBnClickedButton3函数(使用物品按钮点击事件处理函数)

// DXXDlg.cpp: 实现文件
//#include "pch.h"
#include "WCDXX.h"
#include "afxdialogex.h"
#include "DXXDlg.h"
#include "MyStrust.h"// DXXDlg 对话框IMPLEMENT_DYNAMIC(DXXDlg, CDialogEx)DXXDlg::DXXDlg(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOG1, pParent)
{OutputDebugStringA("执行流程-执行DXXDlg构造函数流程1");
}DXXDlg::~DXXDlg()
{OutputDebugStringA("执行流程-执行DXXDlg析构函数流程1");
}void DXXDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(DXXDlg, CDialogEx)ON_BN_CLICKED(IDC_BUTTON1, &DXXDlg::OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &DXXDlg::OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &DXXDlg::OnBnClickedButton3)
END_MESSAGE_MAP()// DXXDlg 消息处理程序void DXXDlg::OnBnClickedButton1()
{MyStrust mystruct;mystruct.InitMy();
}void DXXDlg::OnBnClickedButton2()
{}void DXXDlg::OnBnClickedButton3()
{MyStrust mystruct;mystruct.UseObject(0);
}

MyStrust.h文件的修改:新加UseObject函数

#pragma once
struct Myself {DWORD Blood;// 血量FLOAT X; // x坐标FLOAT Y; // y坐标wchar_t* Name; // 名字
};
class MyStrust
{
public:Myself My;void InitMy();void UseObject(DWORD object);
};

MyStrust.cpp文件的修改:新加UseObject函数

#include "pch.h"
#include "MyStrust.h"void MyStrust::InitMy()
{//  [[0x1AB7CDC]+0x258] 名字/**这个符号表示地址,在c++中被称为指针或指针类型int表示4字节数字int*就表示指针类型的int(int*)0x1AB7CDC;这样表示0x1AB7CDC地址里的内容是4字节的数字*/int* address = (int*)0x1AB7CDC;/*取出地址中的值,也就是取出0x1AB7CDC里的内容*address这样在左边只写一个*表示取内存地址里的值也就是取address它的值,address是0x1AB7CDC,也就是取0x1AB7CDC它的值*/int addressValue = *address;/*(*(int*)addressValue)意思是把addressValue转成int*,也就是把addressValue的值当成内存地址,addressValue的值现在是[0x1AB7CDC]+0x258这个现在这个地址里面的值是名字的地址,所以在左边加了一个*让把名字的地址去除了出来取出来之后就得到了名字,名字是UNICODE类型,UNICODE又被称为宽字节,宽字节的数据是用两个字节描述一个文字或字母在c++里wchar_t类型就是UNICODE然后在c++中名字这种数据被称为字符串,如果要用字符串必须用指针类型也就是wchar_t*右边加上*让wchar_t变成指针类型的wchar_t,才能在c++中使用字符串*/wchar_t* name = (wchar_t*)(*(int*)(addressValue+0x258));// 一般函数名后面是W就表示有UNICODE,也就是要用宽字节OutputDebugStringW(name);//  [[0x1AB7CDC]+0x18C]x坐标//  [[0x1AB7CDC]+0x190]y坐标/*取出地址中的值,也就是取出0x1AB7CDC里的内容*address这样在左边只写一个*表示取内存地址里的值也就是取address它的值,address是0x1AB7CDC,也就是取0x1AB7CDC它的值*/float xZuoBiao = *(float*)(addressValue + 0x18C);float yZuoBiao = *(float*)(addressValue + 0x190);char buf[256] = { 0 };// 拼接文字,%f表示拼接一个小数(单浮点数)sprintf(buf, "x=%f;y=%f", xZuoBiao, yZuoBiao);OutputDebugStringA(buf);// [[0x1AB7CDC]+0x36A0]血量int xueliang = *(int*)(addressValue + 0x36A0);// 拼接文字,%d表示拼接一个整数(32位的整数)sprintf(buf, "血量 = %d", xueliang);OutputDebugStringA(buf);
}void MyStrust::UseObject(DWORD object)
{object += 3; // 背包物品序号/*try的作用如果__asm {pushadpush objectmov ecx, 0x1A5FB24 // 背包基址mov ecx, [ecx]mov eax, 0x7B9130 // 使用物品的函数地址call eaxpopad}这个代码运行过程中出现错误了,我不会让游戏崩溃,出现错误之后会执行catch (...) {OutputDebugStringA("MyStrust::UseObject error");}这个catch里面的代码,现在也就是执行OutputDebugStringA("MyStrust::UseObject error");这一行*/try { __asm {pushadpush objectmov ecx, 0x1A5FB24 // 背包基址mov ecx, [ecx]mov eax, 0x7B9130 // 使用物品的函数地址call eax popad}}catch (...) {OutputDebugStringA("MyStrust::UseObject error");}
}

上方的代码不全,只有手写的代码

完整代码:以 24.x86游戏实战-血量与封装人物属性 它的代码为基础进行修改

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg?pwd=q9n5

提取码:q9n5

复制这段内容后打开百度网盘手机App,操作更方便哦


img

相关文章:

32.x86游戏实战-使用物品call

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...

Prometheus+Alertmanager+邮件告警

参考node_exporter-CSDN博客,球球不要断更!!!! 大致流程 1.部署promethus 可以写一个自定义的 systemd 服务启动文档,详情见自定义的 systemd 服务启动方式-CSDN博客 [rootlocalhost system]# sudo tee /e…...

upload-labs漏洞靶场~文件上传漏洞

寻找测试网站的文件上传的模块,常见:头像上传,修改上传,文件编辑器中文件上传,图片上传、媒体上传等,通过抓包上传恶意的文件进行测试,上传后缀名 asp php aspx 等的动态语言脚本,查…...

PostgreSQL 高阶函数详解:全面深入的功能与实用示例

PostgreSQL 高阶函数详解 PostgreSQL 是一款功能强大的开源关系数据库管理系统,以其丰富的功能和高扩展性著称。在数据处理和分析方面,PostgreSQL 提供了一系列高阶函数,可以极大地简化和优化各种复杂操作。本文将详细介绍 PostgreSQL 的高阶…...

Redis——集合 SET

目录 1. 添加元素 SADD 2. 查看元素 SMEMBERS 3. 判断元素是否存在该集合 SISMEMBER 4. 删除元素 SREM 集合 SET 是一种无序集合;因此其与列表有以下区别: (1)列表是有序的,集合是无序的; &#xff0…...

openEuler安装docker

1.下载地址 搜索docker 寻找docker-ce 复制地址 2.配置仓库 [rootlocalhost yum.repos.d]# pwd /etc/yum.repos.d [rootlocalhost yum.repos.d]# vim docker-ce.repo [docker-ce] namedocker baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/ gpgche…...

每天一个数据分析题(四百六十五)- 缺失值

某连续型变量的数据集存在缺失值,可以采用哪种方法处理? A. 插值法填补 B. EM算法填补 C. 随机森林填补 D. 以上均不对 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Pytho…...

干货 | 变频器的详细介绍

变频器简述 变频器是电机控制领域中常见的一种设备,也称变频调节器,是一种将固定频率的交流电转换为可调频率的交流电的电力电子设备,用于控制交流电机的转速和输出功率。变频器通过调节输出电源的电压和频率,从而控制电动机的转速…...

Linux线程2

线程相关函数 线程分离--pthread_detach(后面会详细讲) 函数原型:int pthread_datach(pthread_t thread); 调用该函数之后不需要 pthread_join 子线程会自动回收自己的PCB 杀死(取消)线程--pthread_cancel 取…...

乱弹篇(40)人类追求长寿

不要认为只有中国的老龄化才严重,实际上全球都面临老龄化,其中日本最为严重。 这是随着人类生活和医学水平的不断提高,寿命才会比过去数十年有了大幅度的提升。据资料显示,目前全球平均预期寿命估计为73岁。与百年之前相比&#…...

技术详解:互联网医院系统源码与医保购药APP的整合开发策略

本篇文章,小编将从系统架构、数据安全、用户体验和技术实现等方面详细探讨互联网医院系统与医保购药APP的整合开发策略。 一、系统架构 1.模块化设计 互联网医院系统与医保购药APP的整合需要采用模块化设计。 2.微服务架构 每个功能模块作为一个独立的微服务&am…...

N4 - Pytorch实现中文文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 任务描述步骤环境设置数据准备模型设计模型训练模型效果展示 总结与心得体会 任务描述 在上周的任务中,我们使用torchtext下载了托管的英文的…...

centos 如何安装sox音视频处理工具

要在 CentOS 系统上安装 Sox 音频处理软件,你可以遵循以下步骤。请注意,这些说明适用于 CentOS 7,对于 CentOS 8 及更高版本,某些包管理命令可能略有不同。 第一步:安装所需的依赖库 首先,你需要安装一系列…...

Java语言程序设计——篇十一(2)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…...

Linux 应急响应靶场练习 1

靶场在知攻善防实验室公众号中可以获取 前景需要:小王急匆匆地找到小张,小王说"李哥,我dev服务器被黑了",快救救我!! 挑战内容: (1)黑客的IP地址 (2&#xff0…...

AWS-Lambda的使用

介绍 Lambda 是一种无服务器(Serverless), 而且设计成事件驱动的计算服务器. 简单来说, 你可以将你的 code 上传, 当有事件产生(例如cronjob , 或者S3有新的文件被上传上來) , 你的code 就会在瞬间(零点几秒以內)被叫起來执行. 由于你不用管 Server如何维护, 或者自动扩展之类…...

python3.12 搭建MinerU 环境遇到的问题解决

报错: AttributeError: module pkgutil has no attribute ImpImporter. Did you mean: zipimporter? ERROR: Exception: Traceback (most recent call last):File "D:\ipa_workspace\MinerU\Lib\site-packages\pip\_internal\cli\base_command.py", …...

基于SpringBoot+Vue的流浪猫狗救助救援网站(带1w+文档)

基于SpringBootVue的流浪猫狗救助救援网站(带1w文档) 基于SpringBootVue的流浪猫狗救助救援网站(带1w文档) 该流浪猫狗救助救援网站在Windows平台下完成开发,采用java编程语言开发,将应用程序部署于Tomcat上,加之MySQL接口来实现交互式响应服…...

56_AOP

AOP使用案例 如何进行数据库和Redis中的数据同步?/ 你在项目的那些地方使用了aop?答:可以通过Aop操作来实现数据库和Redis中的数据同步。/ 通过Aop操作来实现数据库和Redis中的数据同步。可以定义一个切面类,通过对控制器下的所有…...

安装了h5py,使用报错ImportError: DLL load failed while importing _errors

使用pip 安装了h5py,但是运行代码报错; from . import _errorsImportError: DLL load failed while importing _errors: 找不到指定的程序。 原因: 可能和不正确安装h5py这个包有关系 解决: pip uninstall h5py 换成使用conda…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…...

无头浏览器技术:Python爬虫如何精准模拟搜索点击

1. 无头浏览器技术概述 1.1 什么是无头浏览器&#xff1f; 无头浏览器是一种没有图形用户界面&#xff08;GUI&#xff09;的浏览器&#xff0c;它通过程序控制浏览器内核&#xff08;如Chromium、Firefox&#xff09;执行页面加载、JavaScript渲染、表单提交等操作。由于不渲…...