自动化助手的添加(红字公告的逆向分析&C++实现函数调用以及菜单呼出)

买东西 会有红字 购买成功字样

发现怎么改都改不了,按道理只要这个要显示 内存里都是有的

但这个东西内存里有 就是改不了 有可能这个内容是服务器发送过来的

这个地方通过封包的函数还是可以处理掉的

还可以试试看改写,但看了看发现不行。

但这个红色公告和之前的普通公告都是类似的,都是显示公告

在这下断点看看有没有被触发,发现没有,就往下找,这地方是生成类的 

在这儿下断 

买个东西 发现触发了断点  ,然后往上找 看看他对数据的调用是什么样的

发现到了这个地方  和之前白色公告返回的地方非常像  来对比一下:

 不同的地方也就是 14  和 23 的去区别

在白色公告这改成14试试

发现公告变成了红色 

再看看红字函数的调用情况

这是他的调用过程 

对比发现所属的类都是一样的  两个函数调用的方式都是一样的

再找红字公告栏  直接ret 调红字函数发现公告栏还显示,那么还要再找这个公告栏函数

通过观察参数发现是

 分析发现ebp表示公告的 颜色RGB表示

再用C++来实现分析好的函数

定义:

#pragma once
#include"SRO_String.h"
typedef class Notice
{
	typedef void (Notice::* PROC_PSROSTR)(PSROSTRING);
	typedef void (Notice::* PROC_D_WSTR_D_D)(int, wchar_t*, int, int);
public:
	static PROC_PSROSTR _NormalNotice;//公告函数
	static PROC_PSROSTR _NetNotice; //server公告
	static PROC_D_WSTR_D_D  _ChatNotice;//聊天框公告
public:
	void NormalNotice(PSROSTRING _txt);
	void NetNotice(PSROSTRING _txt);
	void ChatNotice( wchar_t* _txt, int color=0xFFFFAEC3,int type1=0x03, int type2=0x01);


}*PNotice;

实现:

#include "pch.h"
#include "Notice.h"

Notice::PROC_PSROSTR		Notice::_NormalNotice{};//公告函数
Notice::PROC_PSROSTR		Notice::_NetNotice{};
Notice::PROC_D_WSTR_D_D		Notice::_ChatNotice{};//聊天框公告

void Notice::NormalNotice(PSROSTRING _txt)
{
	(this->*_NormalNotice)(_txt);
}

void Notice::NetNotice(PSROSTRING _txt)
{
	(this->*_NetNotice)(_txt);
}

//type1 0x3   type2 0x01
void Notice::ChatNotice(wchar_t* _txt, int color, int type1, int type2)
{
	(this->*_ChatNotice)( type1,_txt, color, type2);
}

再调整初始化位置:

就可以发现 

 功能已经完成了调用

在对接游戏菜单:

	_pgamebase->Init();
	DWORD* desp = (DWORD*)_ESP;
	if (vip)
	{
		_ui->UIShow();
		return false;
	}
	else
	{
		if (desp[1] == 1)
		{
			_pgamebase->SRO_Notice->NetNotice(&vip_notice);
			_pgamebase->SRO_Notice->ChatNotice(vip_notice.wcstr(), 0xFFFF0000);
			_pgamebase->SRO_Notice->NormalNotice(&vip_notice);
		}
		
		return true;
	}

来呼出界面

发现窗口关闭的时候 如果是点 × 来关闭无法触发标志位变化

就要添加消息响应就OK了 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#A#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值