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

这篇具有很好参考价值的文章主要介绍了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也读不出字符串了

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

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

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

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

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

它还是与SRO_String一样

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

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

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

修改之后就正常了

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

这个也正常

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

AIM.h文件的修改

#pragma once
#include "SRO_String.h"

typedef class AIM
{
public:
	char pad_0000[272]; //0x0000
	SRO_String Name; //0x0114 角色名字长度是7
	char pad_0115[892]; //0x0115
	int32_t MP; //0x04A8 蓝量
	int32_t MaxHP; //0x04AC 最大生命值
	int32_t MaxMP; //0x04B0 最大蓝量
	int32_t HP; //0x04B4 生命值
	char pad_04B8[608]; //0x04B8
	float x; //0x0718 x坐标
	float h; //0x071C z坐标
	float y; //0x0720 y坐标
	char pad_0724[428]; //0x0724
	char LV; //0x08D0 等级
	char unlv[3];
	char pad_08D4[4]; //0x08D4
	int32_t Exp; //0x08D8 经验
	char pad_08DC[12]; //0x08DC
	int 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文件的修改文章来源地址https://www.toymoban.com/news/detail-793331.html

#pragma once

typedef 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;

到了这里,关于71.网游逆向分析与插件开发-角色数据的获取-修复角色名与等级显示问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 75.网游逆向分析与插件开发-背包的获取-背包结构与指针的逆向分析

    内容参考于:易道云信息技术研究院VIP课 上一个内容:物品名称与物品编号的映射关系分析-CSDN博客 通过上一个内容已经可以通过物品的id得到一个名字,知道了它的算法,它的算法自己封装好了,我们直接用就好,接下来要用到物品的指针了,所以接下来分析物品的指针怎

    2024年01月21日
    浏览(37)
  • 61.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏红字公告功能的逆向分析

    内容来源于: 易道云信息技术研究院VIP课 上一节内容:游戏公告功能的逆向分析与测试-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:63e04cc40f649d10ba2f4fa313ca65cc78f46516 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-游戏红字公告功能的逆

    2024年01月23日
    浏览(44)
  • 64.网游逆向分析与插件开发-游戏增加自动化助手接口-优化自动助手与游戏焦点的切换

    内容来源于: 易道云信息技术研究院VIP课 上一个内容:自动化助手UI与游戏菜单的对接-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:617ac3477ef18273fb9cc281be3c04052304b965 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-优化自动助手与游戏焦

    2024年01月15日
    浏览(51)
  • 63.网游逆向分析与插件开发-游戏增加自动化助手接口-自动化助手UI与游戏菜单的对接

    内容来源于: 易道云信息技术研究院VIP课 上一个内容:游戏公告类的C++还原-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:19a2828def451a280ee211c62dcd1074ed422054 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-自动化助手UI与游戏菜单的对接.

    2024年02月02日
    浏览(40)
  • 使用Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录

    兄弟们天天看基础看腻了吧 今天来分享一下如何使用Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录。 目标:某 7 网游登录 主页:aHR0cHM6Ly93d3cuMzcuY29tLw== 接口:aHR0cHM6Ly9teS4zNy5jb20vYXBpL2xvZ2luLnBocA== 逆向参数:Query String Parameters: password: SlVEOThrcjgzNDNjaUYxOTQzNDM0eVM

    2023年04月13日
    浏览(62)
  • 逆向分析某office插件

    注:本文仅用于技术研究与探讨,不提供任何成品和补丁程序 今天要逆向的是XX格子这款部分功能付费的Office插件。先安装好后打开看看,看它都有啥可以调教的功能,发现了一个VIP窗口,那这就有意思了,狠狠的开破。 随后我们点击加入会员,点击离线登录,弹出如下窗口

    2024年02月17日
    浏览(38)
  • 【验证码逆向专栏】数美验证码全家桶逆向分析以及 AST 获取动态参数

    本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲

    2024年02月03日
    浏览(37)
  • chrome extensions 谷歌插件开发 监听请求和获取响应数据

    使用权限 \\\"webRequest\\\",\\\"webRequestBlocking\\\" 在背景页中拦截并发出请求获取数据, webRequest只能拦截到请求,想要获取响应数据可以重发一次请求 使用权限 \\\"debugger\\\",\\\"activeTabs\\\" 背景页使用该方法 该方法只能拦截到 Fetch/XHR 类型 的数据 可以使用js注入拦截方法,如未获取到可使用setTi

    2024年02月16日
    浏览(47)
  • 【iOS逆向与安全】iOS插件开发入门

    前言 经过之前的学习,相信你已经能熟练的使用Frida-trace、IDA Pro等逆向工具。不过,仅仅到这肯定是不够的。接下来,学会把你逆向的结果打包成插件并运行,那iOS逆向,你也就真正的入门了。 一、目标 把逆向的结果制作成插件并运行 二、工具 mac系统 Xcode:插件开发工具

    2024年02月09日
    浏览(64)
  • 【iOS逆向与安全】iOS插件开发光速入门

    经过之前的学习,相信你已经能熟练的使用Frida-trace、IDA Pro等逆向工具。不过,仅仅到这肯定是不够的。接下来,学会把你逆向的结果打包成插件并运行,那iOS逆向,你也就真正的入门了。 把逆向的结果制作成插件并运行 mac系统 Xcode:插件开发工具 已越狱iOS设备:运行deb插

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包