当前位置: 首页 > 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…...

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

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

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...