能力值:
( LV12,RANK:1130 )
|
-
-
2 楼
可以试试抓包工具,抓下数据再分析,这样游戏就不会掉线了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我抓包试过,实在是看不出来有什么明显的特征,而且即使发送相同的内容,截到包的数据都不一样,要直接分析出加密算法比较困难。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
自己顶也是一种美德。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
直接看数据包肯定是不行的,中间加密的过程可能很长啊。
一般是在send上设内存断点,看这个数据是从哪来的
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
再对密钥生成地址设断点,如果它在Stack上,找到调用它的函数
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
既然找到了算法的位置,我建议使用“爆破法”实现破解,要破译加密算法可不是一两天的事。
|