欢迎光临
我们一直在努力

VB 从零开始编外挂(十)-.NET教程,VB.Net语言

建站超值云服务器,限时71元/月

前天晚上我跟封包玩了一晚上,因才开始(第一次跟封包)说一下我一晚上的发现吧

我是直接用wpe截取的,因为金山游戏本身都有截取封包的保护措施(就像mm所说),直接用wpe截取我是截取不到的,后来用ollydbg调试的时候才截取的到。

经过前面的准备,封报的明文准备已经ok,准备进行加密,加密方式是取一个4字节的数字,对封包进行xor运算,运算完毕后就直接发送出去,我核对过用wpe截取封包的数据,和我看到的运算结果完全一致,这说明只要用那个4字节的数字对封包进行反xor运算就可以得到明文的封包。

其实说白了那个4字节的数字就是每次加密的密匙,也就是服务器认可的,这个4字节怎么得出的我就没跟了,暂时只发现只要不更换场景,4字节密匙不会更变。

相同道理,服务返回的信息也是经过4字节xor运算处理了的,客户端解密时候取服务端4字节密匙对封包进行解密就可以得到明文封包。

大体说下封神封包加密解密流程

send:

1,制造明文封包

2,取4字节send密匙

3,用4字节密匙对封包进行xor运算(保留前2位),最后不足4字节进行单字节运算。

4,发送。

revc:

1,收到封包

2,取4字节revc密匙

3,用4字节密匙对封包进行xor运算(保留前2位),最后不足4字节进行单字节运算。

4,对明文封包进行分析

——————————————————————————————————————————————————–

以上的方法比较累人!下面说说本地制作吧(既是用大家熟悉的fpe等软件)

制作辅助外挂(自动加血,自动加蓝,免负重等等)

hp的地址是不固定的,我使用金山游侠先找出当前的那个地址,

然后使用softice对该地址设置断点,softice应该会立刻断住,

你会看见mov dword ptr ds:[eax+ecx*8+eb4],edi,

在客户端中,位置是0x4b2c74,

你可以修改游戏的进程,

把mov dword ptr ds:[eax+ecx*8+eb4],

edi改成一个e9 xx xx xx xx 90 90,

jmp到进程中.rsrc和.data之间的空余地址,

把(xx xx xx xx) + 0x4b2c74 + 5处的代码修改成mov y, edi,

下一条做原来的mov dword ptr ds:[eax+ecx*8+eb4],edi,

再来个e9 zz zz zz zz,

设置好zz zz zz zz使其再跳到原来dword ptr ds:[eax+ecx*8+eb4],

edi的下一句,就是0x4b2c7b处,

这样hp的地址就固定下来了,只要看y就知道hp了。

——————————————————————————————————————————————————–

下面说说客服端的破解(小试牛刀!)有兴趣的朋友可以制作一个dll

来实现加血锁定血量!

.text:004e8ef0 sub_4e8ef0 proc near

.text:004e8ef0

.text:004e8ef0 arg_0 = dword ptr 4

.text:004e8ef0 arg_4 = dword ptr 8

.text:004e8ef0 arg_8 = dword ptr 0ch

.text:004e8ef0

.text:004e8ef0 mov ecx, [esp+arg_0] ; 可能是长度len地址

.text:004e8ef4 push ebx

.text:004e8ef5 mov eax, [esp+4+arg_4] ; 缓存地址

.text:004e8ef9 push esi

.text:004e8efa mov esi, ecx

.text:004e8efc push edi

.text:004e8efd mov edi, [esp+0ch+arg_8] ; 加密key地址

.text:004e8f01 and esi, 3 ;相当于缓存长度除以4的余数

.text:004e8f04 shr ecx, 2 ;相当于缓存长度除以4的商

.text:004e8f07 mov edx, [edi] ;把加密key值放进edx

.text:004e8f09 mov ebx, ecx ;

.text:004e8f0b dec ecx ;

.text:004e8f0c test ebx, ebx ;

.text:004e8f0e jbe short loc_4e8f1e ;判断跳转

.text:004e8f10 inc ecx ;

.text:004e8f11

.text:004e8f11 loc_4e8f11:

.text:004e8f11 mov ebx, [eax]

.text:004e8f13 add eax, 4

.text:004e8f16 xor ebx, edx ;异或运算,edx=key的值,核心运算

.text:004e8f18 dec ecx

.text:004e8f19 mov [eax-4], ebx

.text:004e8f1c jnz short loc_4e8f11 ;相当于for循环运算

.text:004e8f1e

.text:004e8f1e loc_4e8f1e:

.text:004e8f1e mov ecx, esi

.text:004e8f20 dec esi

.text:004e8f21 test ecx, ecx

.text:004e8f23 jbe short loc_4e8f35

.text:004e8f25 lea ecx, [esi+1]

.text:004e8f28

.text:004e8f28 loc_4e8f28:

.text:004e8f28 mov bl, [eax]

.text:004e8f2a xor bl, dl ;异或运算

.text:004e8f2c mov [eax], bl

.text:004e8f2e inc eax

.text:004e8f2f shr edx, 8

.text:004e8f32 dec ecx

.text:004e8f33 jnz short loc_4e8f28;相当于for循环运算

.text:004e8f35

.text:004e8f35 loc_4e8f35: key付值运算;

.text:004e8f35 mov eax, [edi]

.text:004e8f37 mov edx, eax

.text:004e8f39 shl edx, 5

.text:004e8f3c sub edx, eax

.text:004e8f3e mov eax, 1

.text:004e8f43 add edx, 8088405h

.text:004e8f49 mov [edi], edx key付值

.text:004e8f4b pop edi

.text:004e8f4c pop esi

.text:004e8f4d pop ebx

.text:004e8f4e retn

.text:004e8f4e sub_4e8ef0 endp

——————————————————————————————————————————————————–

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » VB 从零开始编外挂(十)-.NET教程,VB.Net语言
分享到: 更多 (0)