【游戏逆向】内存构造发包结构体实现协议发送简单代码

捕捉到游戏的封包以后

我们可以对其进行发送来实现功能

基本有两种方式

第一种直接调用明文发包函数

第二种构造明文封包以后,再调用加密算法,然后通过send等发包函数对其进行发送

如果能够把加密算法分析透彻的话,第二种方式是最好的

当然第一种方式比较简单省力,如果不考虑检测的可能,俩种是没有任何区别的

typedef struct T明文包结构体

{

DWORD flag1;

DWORD flag2;

DWORD flag3;

DWORD 包开始指针;

DWORD 包结束指针1;

DWORD 包结束指针2;

}_T明文包结构体;

按照之前游戏中分析的结构体情况

我们构造出这样的函数

void Call_明文发包(DWORD flag1,DWORD flag2,DWORD flag3,char* 包地址,DWORD 包长)

{

__try

{

T明文包结构体 A;

A.flag1=flag1;

A.flag2=flag2;

A.flag3=flag3;

A.包开始指针=(DWORD)包地址;

A.包结束指针1=(DWORD)包地址+包长;

A.包结束指针2=(DWORD)包地址+包长;

T明文包结构体* B=&A;

Call_输出调试信息(“QQ西游 %X\r\n”,B);

__asm

{

pushad

push B

mov esi,Base_怪物

mov esi,[esi]

add esi,0x13D4

mov ecx,esi

mov eax,CallAddr_明文包

call eax

popad

}

}

__except (1)

{

Call_输出调试信息(“QQ西游 明文发包CALL异常\r\n”);

}

}

然后我们可以用HOOK明文包抓到的任意封包进行测试

void 封包_喊话测试()

{

DWORD 包长=0x9;

//DE 01 05 00 32 32 32 32 32

unsigned char a[0x9]={0xDE,0x01,0x05,0x00,0x32,0x32,0x32,0x32,0x32};

Call_明文发包(0x007D4B3C,0x00809400,0,(char*)&a,0x9);

}
在这里插入图片描述
当然这只是最简单的封包

封包总有各种变量,需要我们去细致分析构造

然后再进行发送

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

douluo998

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

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

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

打赏作者

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

抵扣说明:

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

余额充值