首页
社区
课程
招聘
[求助]破解发送数据包加密算法的思路?
发表于: 2005-9-21 11:26 6523

[求助]破解发送数据包加密算法的思路?

2005-9-21 11:26
6523
  主要是破解发送数据包时的加密算法,先在getwindowtext 上下断点,成功拦截后,再在得到的字符串上下内存访问断点,但是没有发现任何代码访问这个字符串,游戏是怎么将这个字符串加密发送出去的???
  因为这个游戏每隔一秒向服务器发送一次数据,如果在send 上下断点,发现数据长度都是 0,而且时间跟长了游戏就掉线了,也不好弄。
  搞了几个通宵都搞不出来,我初学破解,不知道是不是思路不对,还请看雪的各位老大指点密经.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 442
活跃值: (1246)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
可以试试抓包工具,抓下数据再分析,这样游戏就不会掉线了
2005-9-21 11:40
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我抓包试过,实在是看不出来有什么明显的特征,而且即使发送相同的内容,截到包的数据都不一样,要直接分析出加密算法比较困难。
2005-9-21 11:48
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
自己顶也是一种美德。
2005-9-21 16:44
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
直接看数据包肯定是不行的,中间加密的过程可能很长啊。
一般是在send上设内存断点,看这个数据是从哪来的
2005-9-21 19:32
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
多谢楼上的提醒,加密算法的位置我已经找到,但是不知道密匙的生成算法,密匙在每次游戏启动时动态生成,请问要怎么样才能定位生成密匙的代码的位置????
下面是加密部分的代码:
005F47B0   /$  53            push ebx
005F47B1   |.  55            push ebp
005F47B2   |.  8BE9          mov ebp,ecx
005F47B4   |.  8B4C24 0C     mov ecx,dword ptr ss:[esp+C]           ;  得到循环次数变量
005F47B8 e>|.  8AC1          mov al,cl                              ;  cl=0c al=a4
005F47BA   |.  B3 9D         mov bl,9D
005F47BC   |.  F6EB          imul bl                                ;  算完后al=5c
005F47BE   |.  56            push esi
005F47BF   |.  33F6          xor esi,esi
005F47C1   |.  85C9          test ecx,ecx                           ;  测试ecx的值是否为0
005F47C3   |.  BA 6D080000   mov edx,86D
005F47C8   |.  884424 10     mov byte ptr ss:[esp+10],al
005F47CC   |.  7E 53         jle short Hero.005F4821                ;  如果循环变量cx=0,则不需要循环,退出
005F47CE   |.  8B4424 14     mov eax,dword ptr ss:[esp+14]          ;  被加密的数据的地址进eax
005F47D2   |.  57            push edi
005F47D3   |.  2B4424 1C     sub eax,dword ptr ss:[esp+1C]
005F47D7   |.  894424 18     mov dword ptr ss:[esp+18],eax
005F47DB   |.  EB 04         jmp short Hero.005F47E1
005F47DD   |>  8B4424 18     /mov eax,dword ptr ss:[esp+18]         ;  输入地址与输出地址的差
005F47E1   |>  8B7C24 1C      mov edi,dword ptr ss:[esp+1C]         ;  加密后的存储地址进edi
005F47E5   |.  8BDE          |mov ebx,esi
005F47E7   |.  03FE          |add edi,esi
005F47E9   |.  81E3 07000080 |and ebx,80000007
005F47EF   |.  79 05         |jns short Hero.005F47F6
005F47F1   |.  4B            |dec ebx
005F47F2   |.  83CB F8       |or ebx,FFFFFFF8
005F47F5   |.  43            |inc ebx
005F47F6   |>  8A5C2B 10     |mov bl,byte ptr ds:[ebx+ebp+10]       ;  密匙存放地址,不清楚出处 1.01f9fe8c 2.01f9fe8d 递增1
005F47FA   |.  321C38        |xor bl,byte ptr ds:[eax+edi]          ;  被加密内容 1.0012a7a4 2.0012a7a5 递增1
005F47FD   |.  8BC2          |mov eax,edx
005F47FF   |.  C1F8 08       |sar eax,8
005F4802   |.  32D8          |xor bl,al
005F4804   |.  8A4424 14     |mov al,byte ptr ss:[esp+14]
005F4808   |.  32D8          |xor bl,al
005F480A   |.  46            |inc esi
005F480B   |.  881F          |mov byte ptr ds:[edi],bl              ;  存储一个加密字节
005F480D   |.  8D3C52        |lea edi,dword ptr ds:[edx+edx*2]      ;  edi=edx+edx*2
005F4810   |.  3BF1          |cmp esi,ecx
005F4812   |.  8D04FF        |lea eax,dword ptr ds:[edi+edi*8]      ;  eax=edi+edi*8
005F4815   |.  8D3CC2        |lea edi,dword ptr ds:[edx+eax*8]      ;  edi=edx+eax*8
005F4818   |.  8D04BF        |lea eax,dword ptr ds:[edi+edi*4]      ;  eax=edi+edi*4
005F481B   |.  8D1442        |lea edx,dword ptr ds:[edx+eax*2]      ;  edx=edx+eax*2
005F481E   |.^ 7C BD         \jl short Hero.005F47DD
005F4820   |.  5F            pop edi
005F4821   |>  5E            pop esi
005F4822   |.  5D            pop ebp
005F4823   |.  5B            pop ebx
005F4824   \.  C2 0C00       retn 0C
2005-9-26 13:37
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
再对密钥生成地址设断点,如果它在Stack上,找到调用它的函数
2005-9-28 16:27
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
既然找到了算法的位置,我建议使用“爆破法”实现破解,要破译加密算法可不是一两天的事。
2005-9-28 19:30
0
游客
登录 | 注册 方可回帖
返回