71.网游逆向分析与插件开发-角色数据的获取-修复角色名与等级显示问题

内容参考于:易道云信息技术研究院VIP课

上一个内容:自动化助手UI显示角色数据-CSDN博客

码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git

码云版本号:0049452c079867779f639c4bfab9bd1cd0c68932

代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-修复角色名与等级显示问题.zip

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg

提取码:q9n5

--来自百度网盘超级会员V4的分享

HOOK引擎,文件名为:黑兔sdk.zip

链接:https://pan.baidu.com/s/1IB-Zs6hi3yU8LC2f-8hIEw

提取码:78h8

--来自百度网盘超级会员V4的分享

以 自动化助手UI显示角色数据-CSDN博客它的代码为基础进行修改

等级它有时候显示正确有时候显示不正确,这个问题就出在数据类型上,角色名字用的还是我们的SRO_String类型。

然后打开 Cheat Engine 看它的内存,这里 Cheat Engine也读不出字符串了

然后点击浏览相关的内存区域

很明显的看出这里并不是名字,是一个内存地址

它还是与SRO_String一样

然后自动化助手可以正常显示的名字的内存,它与不正常显示的内存不一样,不能直接用SRO_String需要修改

修改之后就正常了

这个也正常

AIM.h文件的修改

#pragma once
#include "SRO_String.h"typedef class AIM
{
public:char pad_0000[272]; //0x0000SRO_String Name; //0x0114 角色名字长度是7char pad_0115[892]; //0x0115int32_t MP; //0x04A8 蓝量int32_t MaxHP; //0x04AC 最大生命值int32_t MaxMP; //0x04B0 最大蓝量int32_t HP; //0x04B4 生命值char pad_04B8[608]; //0x04B8float x; //0x0718 x坐标float h; //0x071C z坐标float y; //0x0720 y坐标char pad_0724[428]; //0x0724char LV; //0x08D0 等级char unlv[3];char pad_08D4[4]; //0x08D4int32_t Exp; //0x08D8 经验char pad_08DC[12]; //0x08DCint SkillPoint; // 技能点数char UnUSERage; // 怒气char unknownH33; char Rage; //0x08EE 怒气值char RageEx; //0x08EF 怒气值副本char pad_08F0[1883]; //0x08F0
}*PAIM; //Size: 0x104B

CUIWnd_0.cpp文件的修改

// CUIWnd_0.cpp: 实现文件
//#include "pch.h"
#include "htdMfcDll.h"
#include "CUIWnd_0.h"
#include "GameBase.h"
#include "extern_all.h"// CUIWnd_0 对话框
CUIWnd_0* UI_0;
void _stdcall TimeProc(HWND, UINT, UINT_PTR, DWORD) {if (UI_0) {UI_0->ShowPlayerTxt();}
}IMPLEMENT_DYNAMIC(CUIWnd_0, CDialogEx)CUIWnd_0::CUIWnd_0(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_PAGE_0, pParent), txt_Player(_T(""))
{UI_0 = this;
}CUIWnd_0::~CUIWnd_0()
{
}void CUIWnd_0::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, txt_Player);
}BOOL CUIWnd_0::OnInitDialog()
{CDialogEx::OnInitDialog();::SetTimer(this->m_hWnd, 0x100001, 10, TimeProc);return TRUE;
}void CUIWnd_0::ShowPlayerTxt()
{if ((_pgamebase) && (_pgamebase->SRO_Player)) {CString txtTmp;txtTmp.Format(L"角色名:[%s] 等级[lv:%d]\r\n", _pgamebase->SRO_Player->Name.wcstrByName(), _pgamebase->SRO_Player->LV);txt_Player = txtTmp;txtTmp.Format(L"经验值:[%d] 技能点[%d]\r\n", _pgamebase->SRO_Player->Exp, _pgamebase->SRO_Player->SkillPoint);txt_Player += txtTmp;txtTmp.Format(L"血量:[%d/%d]\r\n", _pgamebase->SRO_Player->HP, _pgamebase->SRO_Player->MaxHP);txt_Player += txtTmp;txtTmp.Format(L"蓝量:[%d/%d]\r\n", _pgamebase->SRO_Player->MP, _pgamebase->SRO_Player->MaxMP);txt_Player += txtTmp;txtTmp.Format(L"坐标:[%f][%f][%f]\r\n", _pgamebase->SRO_Player->x, _pgamebase->SRO_Player->h, _pgamebase->SRO_Player->y);txt_Player += txtTmp;// 计算百分比txtTmp.Format(L"怒气:[%f/100]\r\n", (float)_pgamebase->SRO_Player->Rage/5*100);txt_Player += txtTmp;}UpdateData(FALSE);
}BEGIN_MESSAGE_MAP(CUIWnd_0, CDialogEx)
END_MESSAGE_MAP()// CUIWnd_0 消息处理程序

SRO_String.cpp文件的修改

#include "pch.h"
#include "SRO_String.h"int SRO_String::stringlength(const wchar_t* str)
{for (lenth = 0; str[lenth]; lenth++);size = lenth * 2 + 1;return size;
}wchar_t* SRO_String::wcstr()
{if (size < 0x8) {return title;}else {return Ptitle;}
}wchar_t* SRO_String::wcstrByName()
{if (0xF<(lenth + 1)*2) {return Ptitle;}return title;
}SRO_String& SRO_String::operator=(const wchar_t* _txt)
{int _size = stringlength(_txt);if (_size > 8) {Ptitle = (wchar_t*)_txt;}else {memcpy(title, _txt, _size);}return *this;
}

SRO_String.h文件的修改

#pragma oncetypedef class SRO_String
{
private:int un1;union {wchar_t title[0x8];wchar_t* Ptitle;};unsigned lenth;unsigned size;int stringlength(const wchar_t* str);
public:wchar_t* wcstr();wchar_t* wcstrByName();SRO_String& operator=(const wchar_t* _txt);
}*PSROSTRING;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软Office 2021 批量许可版

软件介绍 微软办公软件套件Microsoft Office LTSC 2021 专业增强版2024年1月批量许可版更新推送&#xff01;Office2021正式版和Windows11系统同时于2021年10月份正式推出&#xff0c;Office LTSC 2021相比 Office2019正式版变化不太&#xff0c;最主要强化了LOGO设计趋势&…

Visual Studio Code 1.67调整文件嵌套、Markdown导航

2022年4月发布的微软代码编辑器也为Java和Visual Studio code for Web扩展包带来了改进。 Visual Studio Code 1.67发布于5月5日&#xff0c;可以从项目网站下载&#xff0c;适用于Linux、Windows或Mac。新特性中特别关注的是浏览器文件嵌套和Markdown代码导航。该版本还带来了…

你读过哪些令你有跪感的书?

推荐知友们去看看这本书《绝密人性天书》&#xff0c;绝对是本好书&#xff0c;教你如何洞察人性。 原文地址&#xff08;建议及时保存&#xff0c;估计过几天就会被河蟹了&#xff09;: https://pan.quark.cn/s/6d80d65761a1 备用链接&#xff1a;https://pan.xunlei.com/s/…

电商物流查询:未来的发展方向

在电商日益繁荣的时代&#xff0c;物流信息查询不仅关乎消费者体验&#xff0c;更影响着电商运营的效率。快速、准确地追踪物流信息至关重要。本文将简述物流信息快速追踪的价值&#xff0c;并重点介绍固乔快递查询助手这一高效查询工具及其批量查询功能。 一、物流信息快速追踪…

arcgis javascript api4.x加载天地图wgs84(wkid:4326)坐标系

需求&#xff1a; 使用arcgis javascript api4.x以basetilelayer方式加载天地图wgs84&#xff08;wkid&#xff1a;4326&#xff09;坐标系 效果&#xff1a; 代码&#xff1a; 提示&#xff1a;&#xff08;下述三个文件放同一个文件夹下&#xff09; 4326.js define([ex…

R语言【paleobioDB】——pbdb_occurrence():从PBDB获取单个化石记录号的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新&#xff0c;该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后&#xff0c;执行本地安装。 Usage pbdb_occurrence (id, ...) Arguments 参数【…

Qt之QByteArray大小写字母转化

QByteArray类对象若为带大小写字母的字符串&#xff0c;可调用函数toUpper()和toLower()实现字母大小写 的转换。函数toUpper&#xff08;&#xff09;的原型声明如下: QByteArray toUpper(&#xff09;&#xff1b; 函数很简单,没有参数,直接返回转换成大写字母后的字节数组。…

【JAVA】MySQL中datetime类型23:59:59自动变为下一天的00:00:00

如&#xff1a;2024-08-11 23:59:59 变成了 2024-08-12 00:00:00。 解析&#xff1a;数据库入库的时候会有500毫秒的进位&#xff0c;然而程序在赋值时间给变量的时候很大概率会超过500ms&#xff0c;有时是999ms。 解决方案 // DateUtil Hutool官网 将生成的时间往前偏移99…

python毕设选题 - 基于时间序列的股票预测于分析

文章目录 1 简介2 时间序列的由来2.1 四种模型的名称&#xff1a; 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 简介 Hi&#xff0c;大家好&#xff0c;今天向大家介绍一个大数据项目…

QTday6作业

思维导图: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSqlDatabase>//数据库管理类 #include <QSqlQuery>//执行sql语句类 #include <QSqlRecord>//数据库记录类 #include <QSqlError>//数据库错误类 #include …

使用ChatGPT对进行论文改写与润色

一、内容改写 关键在于明确改写的具体要求。 例如:[论文内容] 可以指明需要提升该段落的流畅性和逻辑连贯性。 常用指令 细微调整文本 轻微编辑 重写以增强表述清晰度 简化句式 校正语法和拼写错误 提升文本的流畅性和条理性 优化词汇使用 调整文本风格 进行深度编辑…

leetcode 17 电话号码字母组合

题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits “23” 输出&#xf…

2024年烟花爆竹储存证考试题库及烟花爆竹储存试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年烟花爆竹储存证考试题库及烟花爆竹储存试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机…

实践学习PaddleScience飞桨科学工具包

实践学习PaddleScience飞桨科学工具包 动手实践&#xff0c;在实践中学习&#xff01;本项目可以在AIStudio平台一键运行&#xff01;地址&#xff1a;https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错&#xff0c;再执行一次即可。若碰到莫名其妙的…

JavaScript-循环嵌套断点调试-笔记

1.do...while循环 do while语法结构&#xff1a; 循环初始值&#xff1b; do{ //代码&#xff1b; 增量&#xff1b; }while(循环条件)&#xff1b; <script> // 输出十句 &#xff1a; 你好世界 var …

数据可视化大屏自适应,保持比例不变形,满足不同分辨率的需求——利用transform的scale属性缩放,缩放整个页面。

文章目录 一、需求背景&#xff1a;二、需求分析&#xff1a;三、选择方案&#xff1a;四、实现代码&#xff1a;五、效果预览&#xff1a;六、封装组件&#xff1a; 一、需求背景&#xff1a; 数据可视化大屏是一种将数据、信息和可视化效果集中展示在一块或多块大屏幕上的技…

flink 1.18 sql demo

flink 1.18 sql demo 更换flink-table-planner 为 flink-table-planner-loader pom.xml <dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-api-java-uber --><dependency><groupId>org.apache.flink</groupId…

2020年财政收支

偶感兴趣&#xff0c;花了点时间整理 有兴趣的可以参照下面的链接整理完整2022年的数据&#xff0c;2023年的数据还有12月份的数据未出&#xff0c;估计在这几天出。 附 2022年的财政收支情况 2022年基金支出预算表 2020年的社保收入是7.6万亿。 上图个税金额写错了&#xff0c…

信息安全应急演练方案-模板

文章目录 信息安全应急演练方案一、应急演练总体目标二、安全应急演练的具体目标为&#xff1a;三、应急演练计划安排&#xff1a;3.1 黑客攻击服务器应急演练时间安排&#xff1a;演练地点&#xff1a;演练步骤&#xff1a; 3.2 大规模病毒&#xff08;含恶意软件&#xff09;…

Mindspore 公开课 - CodeGeeX

CodeGeeX: 多语言代码生成模型 CodeGeeX 是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现&#xff0c;在鹏城实验室“鹏城云脑II”中的192个节点&#xff08;共1536个国产昇腾910 AI处理器&#xff09;上训练而成。截至2022年6月22日&…