游戏封包是什么意思里的数据是什么意思

百度拇指医生
&&&普通咨询
您的网络环境存在异常,
请输入验证码
验证码输入错误,请重新输入查看: 7852|回复: 9
关于某游戏封包算法分析的一些疑问。
阅读权限10
本帖最后由 missviola 于
12:06 编辑
用看下这游戏从ws2_32导入了哪些函数..网络游戏通迅一般用到的是send,recv,WSASend,WSARecv这四个API函数.发现用到了recv,WSASend,WSARecv,游戏中时发现并未用recv,所以有可能登陆用到了,初步分析是游戏过程中用WSASend和WSARecv通讯,recv用来登陆收包
进游戏后下断bp WSASend,游戏中按V(坐下),游戏被断下,看堆栈区:
& &0056616A& &/CALL 到 WSASend 来自 GAME1_.
0012F1BC& && &|Socket = 318
& &03E9B07C& &|pBuffers = 03E9B07C&&
& && &|nBuffers = 1
& && &|pBytesSent =
0012F1CC& && &|Flags = 0
& && &|pOverlapped = NULL
& && &\Callback = NULL
疑问:某些游戏或软件没有用到WSASend断点。而是用到了send,可是BP send下断之后变成这样。
0012FB68& &0061535B&&/CALL 到 send 来自 Game.
0012FB6C& &0000021C&&|Socket = 21C
0012FB70& &7FDC0040&&|Data = 7FDC0040
0012FB74& &0000003D&&|DataSize = 3D (61.)
0012FB78& &&&\Flags = MSG_DONTROUTE
其中0012FB70& &7FDC0040&&|Data = 7FDC0040是否就是buf?请大牛帮忙解释一下这些堆栈以及对比一下有什么不同?
WSASend的第二个参数buffer指向加密后的包结构,
03E9B07C& &04 00 00 00 E8 0B 2E 01 DC C3 E9 03 01 00 00 00& &...?. 苊? ...
03E9B08C& &00 04 00 00 00 00 00 00 E8 0B 2E 01 51 00 00 00& &. ......?. Q...
观察发现 03E9B080的地址不变,dd 012E0BE8查看发现此地址存放着好像包的内容..
难道需要多次调试,对比一下才知道 03E9B080的地址不变?而dd 012E0BE8又是怎么得来的?03E9B080的地址不变和dd 012E0BE8又有什么关系啊
012E0BE8& &E7FF0004
一般游戏函数调用流程是这样的:
功能函数(打坐)-&明文发包函数(明文包)-&加密函数(密文包)-&通讯函数(send等通讯函数发送密文包..)
通讯函数(recv等通讯函数收到密文包..)-&解密函数(密文包)-&解密明文包(解密后的明文包)..
所以012E0BE8地址存放的是密文包.再次下断bp WSASend,按V断下,连续两次CRTL+F9,加密过程要往回找(解密过程往下找);
A1 A4F25C00 mov eax, dword ptr [5CF2A4]//F2下断单步调试,看012E0BE8何时生成
53& && && && &&&push ebx
83F8 02& && &&&cmp eax, 2
55& && && && &&&push ebp
005605BA 0F84 CE000000& &je& & 0056068E
83F8 03& && &&&cmp eax, 3
0F84 C5000000& &je& & 0056068E
83F8 04& && &&&cmp eax, 4
005605CC 0F84 BC000000& &je& & 0056068E
83F8 05& && &&&cmp eax, 5
0F84 B3000000& &je& & 0056068E
005605DB 83F8 06& && &&&cmp eax, 6
005605DE 0F84 AA000000& &je& & 0056068E
83F8 07& && &&&cmp eax, 7
0F84 A1000000& &je& & 0056068E
005605ED 83F8 08& && &&&cmp eax, 8
0F84 & &je& & 0056068E
8B6C24 10& & mov ebp, dword ptr [esp+10]
005605FA 85ED& && && & test ebp, ebp
005605FC 0F84 & &je& &
B5C24 14& & mov ebx, dword ptr [esp+14]
B 00& && &&&cmp dword ptr [ebx], 0
F84 & &je& &
& && && && &&&push esi
& && && && &&&push edi
B7C24 14& & mov edi, dword ptr [esp+14]
D4F 0C& && &&&lea ecx, dword ptr [edi+C]
call 00566AA0
BF0& && && & mov esi, eax
B03& && && & mov eax, dword ptr [ebx]
D4C24 18& & lea ecx, dword ptr [esp+18]
A 02& && & push 2
C0 02& && &&&add eax, 2
& && && && &&&push ecx
BCE& && && & mov ecx, esi
4424 20& & mov dword ptr [esp+20], eax
3A610000 call
B13& && && & mov edx, dword ptr [ebx]
BCE& && && & mov ecx, esi
& && && && &&&push edx
& && && && &&&push ebp
0056063C E8 2F610000 call
B8F D4020000& &mov ecx, dword ptr [edi+2D4]
C9& && && & test ecx, ecx
1B& && & jnz short
B4E 44& && &&&mov ecx, dword ptr [esi+44]
B13& && && & mov edx, dword ptr [ebx]
D87 D8010000& &lea eax, dword ptr [edi+1D8]
C1 02& && &&&add ecx, 2
& && && && &&&push eax
& && && && &&&push ecx
& && && && &&&push edx
0056065C E8 AF700000 call
//发现经过这个CALL后,12E0BE8中的包生成,所以这有可能是加密函数..重新在此处下断,去掉原先断点,F7跟进.
C4 0C& && &&&add esp, 0C
EB 16& && & jmp short 0056067C
D97 D8010000& &lea edx, dword ptr [edi+1D8]
B01& && && & mov eax, dword ptr [ecx]
& && && && &&&push edx
B56 44& && &&&mov edx, dword ptr [esi+44]
C2 02& && &&&add edx, 2
& && && && &&&push edx
B13& && && & mov edx, dword ptr [ebx]
& && && && &&&push edx
FF50 08& && &&&call dword ptr [eax+8]
& && && && &&&push esi
D4F 04& && &&&lea ecx, dword ptr [edi+4]
4B5A0000 call
BCE& && && & mov ecx, esi
F& && && && &&&pop edi
E& && && && &&&pop esi
D& && && && &&&pop ebp
C0& && && & xor eax, eax
B& && && && &&&pop ebx
0C00& && &&&retn 0C
B4424 0C& & mov eax, dword ptr [esp+C]
D5424 0C& & lea edx, dword ptr [esp+C]
& && && && &&&push edx
B08& && && & mov ecx, dword ptr [eax]
B4424 0C& & mov eax, dword ptr [esp+C]
4C24 10& & mov dword ptr [esp+10], ecx
B4C24 08& & mov ecx, dword ptr [esp+8]
& && && && &&&push eax
& && && && &&&push ecx //包长
82FFFFFF call & &//继续F7跟进
53& && && && &&&push ebx
8B4424 0C& & mov eax, dword ptr [esp+C]//明文包地址
56& && && && &&&push esi
8B7424 0C& & mov esi, dword ptr [esp+C]//包长度
005676BA 57& && && && &&&push edi
005676BB 8B7C24 18& & mov edi, dword ptr [esp+18]//加密密钥
005676BF 8BD6& && && & mov edx, esi
8B0F& && && & mov ecx, dword ptr [edi]
83E2 03& && &&&and edx, 3
C1EE 02& && &&&shr esi, 2
74 0D& && & je& & short
005676CB 8B18& && && & mov ebx, dword ptr [eax]
005676CD 83C0 04& && &&&add eax, 4
33D9& && && & xor ebx, ecx
4E& && && && &&&dec esi
8958 FC& && &&&mov dword ptr [eax-4], ebx
& &^ 75 F3& && & jnz short 005676CB
85D2& && && & test edx, edx
005676DA 76 0D& && & jbe short
005676DC 8A18& && && & mov bl, byte ptr [eax]
005676DE 32D9& && && & xor bl, cl
8818& && && & mov byte ptr [eax], bl
40& && && && &&&inc eax
C1E9 08& && &&&shr ecx, 8
4A& && && && &&&dec edx
& &^ 75 F3& && & jnz short 005676DC
8B07& && && & mov eax, dword ptr [edi]
005676EB 8BC8& && && & mov ecx, eax
005676ED C1E1 05& && &&&shl ecx, 5
2BC8& && && & sub ecx, eax
mov eax, 1
81C1 & &add ecx, 8088405
005676FD 890F& && && & mov dword ptr [edi], ecx
005676FF 5F& && && && &&&pop edi
E& && && && &&&pop esi
B& && && && &&&pop ebx
& && && && &&&retn
在单步调试的时候发现数据段中的数据是4字节4字节在变的..走完这段,密文包也就出来了..又因为这段没调用别的什么模块..所以断定这是加密函数..(希望大家学的是方法,加密往前跟,解密往后跟,,你会发现这游戏调用的加解密是同一个函数,只是密钥不同,所以解密过程就不分析了.)
CString EncAndDec(CString datestr,CString key,int len) //加解密函数
& &int j,nprev,nkey,
& &CString strxor,nxor1;
& &strxor=NULL;
& &for(int i=0;i&len,i++)
strxor=strxor+copy(datastr,i*2+1,2);
nprev=(long int)((int)(&0x&+copy(datastr,i*2+1,2)));
nkey=(long int)((int)(&0x&+copy(key,i*2+1,2)));
nxor=nprev ^
strxor=strxor+nxor1.Format(&%x&,nxor);
密钥的查找:
退出游戏,在选择服务器前下断:选择服务器后断下:
& && &/CALL 到 recv 来自 GAME1_.
0012F92C& && &|Socket = 360
& &04C5983C& &|Buffer = 04C5983C
& && &|BufSize = 22 (34.)
& && &\Flags = 0
dd 04C5983C,ALT+F9看收到的数据:
04C5983C& &22 00 20 00 D4 47 EE F9 D8 3B 99 89 F0 01 6E AC& &&. .讷铢?槟?n
04C5984C& &62 7B 1A 75 64 97 FE C9 68 8B 22 5D AC BF 86 31& &b{ ud楟蒱?] ?
04C5985C& &30 33 ED B8 60 03 00 00 00 00 00 00 00 00 00 00& &03砀` ..........
取消recv断点,在04C59840开始下硬件访问断点,再登陆,如果没反应,在04C59844处下硬件访问断点,依次类推.发现在04C59848处下访问断点断下;
C785 CC&mov dword ptr [ebp+1CC], 0
005665DF 8B85 E2010000& &mov eax, dword ptr [ebp+1E2]
F7D0& && && & not eax
0& &mov dword ptr [ebp+1D0], eax
005665ED 8B8D E6010000& &mov ecx, dword ptr [ebp+1E6]
F7D1& && && & not ecx
898D D4010000& &mov dword ptr [ebp+1D4], ecx
005665FB B0 01& && & mov al, 1
005665FD& &^ EB BD& && & jmp short 005665BC
005665FF 90& && && && &&&nop
E9 08& && &&&sub ecx, 8
& &^ E9 58EAFFFF jmp
分析发现它会将这buffer中的数据取字,4字节反一下,然后存到另一个地方,之后又从buffer中取出另4字节作出同样的操作..验证下.. 发现:
005676BB 8B7C24 18& & mov edi, dword ptr [esp+18]//加密密钥中的值
0& &mov dword ptr [ebp+1D0], eax//和上面的值相等
所以此处是加密密钥..同理.解密密钥就在加密密钥后面4字节
如果服务器发送的密匙是随便发的,找他有何用?最多找到密匙存放处以及怎么存放和怎么加密算法的。才有用啊。可以依葫芦画瓢写个程序达到一样的作用吧?难道是这个意思?小弟最近学习封包的加密解密算法定位和密匙的查找。不知道大牛们有没有相关资料。如果能倾囊教授的或者有想收徒弟的。不嫌弃我愚笨的。请加QQ*****有想一起学的也加吧.在此先膜拜一下大牛们。这年头。。。。大牛都很忙。有时候连回答个问题都很懒了。。。
那啥?这些天想哭来着。都这么多年了。一点长进都没有啊。书是看了不少。又懂又不懂。能看明白,其实又不明白。好期望有个启蒙老师。。马达..一个大老爷们竟然为这事掉眼泪。。希望大牛们帮下忙。偶尔提下问题能热心帮忙解决。也就知足了。。
还有就是封包的加密算法就一定在程序领空吧?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
就是被网路游戏的封包搞的死去活来的才来这里的,看看你得思路,我反正是不会汇编,当学习了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
现在能直接调试的Game太少咯
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
大牛。膜拜你。继续分析贴出来
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看的有点眼花。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
支持下楼主,辛苦了。。。。希望有大牛帮帮你,本人也是小白菜鸟,现在只能单机打滚,网络那些更加不会了。。。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
高手,膜拜,封包算法,不会,希望大牛可以帮上你,顺便在这里学习下
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
我不是牛人,也是个菜鸟。
目前也没有过多的去研究游戏,之后过完年开始研究外挂。
我只是说下我的看法,可能也有不对的
1.密钥是可以不唯一的,可以有随便发送的,
不同密文段的密钥是不一样的,比如维吉尼亚密码。
2.我认为封包的加密算法不一定在程序领空,
因为你知道dll也可以自己写,可能游戏公司不想让其他不相关员工看到这些代码的实现过程。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看不懂,还得好好学习
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz! X3.2
Comsenz Inc.一段游戏封包代码都包含什么_百度知道}

我要回帖

更多关于 游戏封包是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信