首页
社区
课程
招聘
[旧帖] [求助]帮我看看这个加密算法啊? 0.00雪花
发表于: 2009-2-14 11:24 4202

[旧帖] [求助]帮我看看这个加密算法啊? 0.00雪花

2009-2-14 11:24
4202
004C438C   |> \F6D0        not al
004C438E   |.  FEC0        inc al
004C4390   |.  33C9        xor ecx,ecx
004C4392   |.  85DB        test ebx,ebx
004C4394   |.  888424 9800>mov byte ptr ss:[esp+98],al
004C439B   |.  7E 35       jle short hall.004C43D2
004C439D   |.  8D49 00     lea ecx,dword ptr ds:[ecx]
004C43A0   |>  8A940C 9800>/mov dl,byte ptr ss:[esp+ecx+98]
004C43A7   |.  8B45 08     |mov eax,dword ptr ss:[ebp+8]
004C43AA   |.  8A80 8C0300>|mov al,byte ptr ds:[eax+38C]
004C43B0   |.  8B75 08     |mov esi,dword ptr ss:[ebp+8]
004C43B3   |.  02D0        |add dl,al
004C43B5   |.  0FB6D2      |movzx edx,dl
004C43B8   |.  8A92 50F758>|mov dl,byte ptr ds:[edx+58F750]
004C43BE   |.  04 03       |add al,3
004C43C0   |.  88940C 9800>|mov byte ptr ss:[esp+ecx+98],dl
004C43C7   |.  41          |inc ecx
004C43C8   |.  3BCB        |cmp ecx,ebx
004C43CA   |.  8886 8C0300>|mov byte ptr ds:[esi+38C],al
004C43D0   |.^ 7C CE       \jl short hall.004C43A0

004C43D2   |>  8B3D 68E452>mov edi,dword ptr ds:[<&KERNEL32.GetTickCount>]  ;  kernel32.GetTickCount
004C43D8   |.  FFD7        call edi                                         ; [GetTickCount
004C43DA   |.  8BF0        mov esi,eax
004C43DC   |.  FFD7        call edi                                         ; [GetTickCount
004C43DE   |.  0FAFF0      imul esi,eax
004C43E1   |.  8B45 0C     mov eax,dword ptr ss:[ebp+C]
004C43E4   |.  897424 10   mov dword ptr ss:[esp+10],esi
004C43E8   |.  8D50 01     lea edx,dword ptr ds:[eax+1]
004C43EB   |.  EB 03       jmp short hall.004C43F0
004C43ED   |   8D49 00     lea ecx,dword ptr ds:[ecx]
004C43F0   |>  8A08        /mov cl,byte ptr ds:[eax]
004C43F2   |.  40          |inc eax
004C43F3   |.  84C9        |test cl,cl
004C43F5   |.^ 75 F9       \jnz short hall.004C43F0
004C43F7   |.  8B7D 10     mov edi,dword ptr ss:[ebp+10]
004C43FA   |.  8BCF        mov ecx,edi
004C43FC   |.  2BC2        sub eax,edx
004C43FE   |.  8D71 01     lea esi,dword ptr ds:[ecx+1]
004C4401   |>  8A11        /mov dl,byte ptr ds:[ecx]
004C4403   |.  41          |inc ecx
004C4404   |.  84D2        |test dl,dl
004C4406   |.^ 75 F9       \jnz short hall.004C4401
004C4408   |.  2BCE        sub ecx,esi
004C440A   |.  03C1        add eax,ecx
004C440C   |.  8BC8        mov ecx,eax
004C440E   |.  81E1 030000>and ecx,80000003
004C4414   |.  79 05       jns short hall.004C441B
004C4416   |.  49          dec ecx
004C4417   |.  83C9 FC     or ecx,FFFFFFFC
004C441A   |.  41          inc ecx
004C441B   |>  74 10       je short hall.004C442D
004C441D   |.  99          cdq
004C441E   |.  83E2 03     and edx,3
004C4421   |.  03C2        add eax,edx
004C4423   |.  C1F8 02     sar eax,2
004C4426   |.  8D0485 0400>lea eax,dword ptr ds:[eax*4+4]
004C442D   |>  8D7424 18   lea esi,dword ptr ss:[esp+18]
004C4431   |.  8BCF        mov ecx,edi
004C4433   |.  2BF7        sub esi,edi
004C4435   |>  8A11        /mov dl,byte ptr ds:[ecx]
004C4437   |.  88140E      |mov byte ptr ds:[esi+ecx],dl
004C443A   |.  41          |inc ecx
004C443B   |.  84D2        |test dl,dl
004C443D   |.^ 75 F6       \jnz short hall.004C4435
004C443F   |.  8B4D 0C     mov ecx,dword ptr ss:[ebp+C]
004C4442   |.  8BF1        mov esi,ecx
004C4444   |>  8A11        /mov dl,byte ptr ds:[ecx]
004C4446   |.  41          |inc ecx
004C4447   |.  84D2        |test dl,dl
004C4449   |.^ 75 F9       \jnz short hall.004C4444
004C444B   |.  2BCE        sub ecx,esi
004C444D   |.  8D7C24 18   lea edi,dword ptr ss:[esp+18]
004C4451   |.  8BD1        mov edx,ecx
004C4453   |.  4F          dec edi
004C4454   |>  8A4F 01     /mov cl,byte ptr ds:[edi+1]
004C4457   |.  47          |inc edi
004C4458   |.  84C9        |test cl,cl
004C445A   |.^ 75 F8       \jnz short hall.004C4454
004C445C   |.  8BCA        mov ecx,edx
004C445E   |.  C1E9 02     shr ecx,2
004C4461   |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[esi]
004C4463   |.  8BCA        mov ecx,edx
004C4465   |.  99          cdq
004C4466   |.  83E2 03     and edx,3
004C4469   |.  03C2        add eax,edx
004C446B   |.  83E1 03     and ecx,3
004C446E   |.  C1F8 02     sar eax,2
004C4471   |.  85C0        test eax,eax
004C4473   |.  F3:A4       rep movs byte ptr es:[edi],byte ptr ds:[esi]
004C4475   |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
004C4479   |.  7E 17       jle short hall.004C4492
004C447B   |.  EB 03       jmp short hall.004C4480
004C447D   |   8D49 00     lea ecx,dword ptr ds:[ecx]
004C4480   |>  8B11        /mov edx,dword ptr ds:[ecx]
004C4482   |.  8B7C24 10   |mov edi,dword ptr ss:[esp+10]
004C4486   |.  33FA        |xor edi,edx
004C4488   |.  83C1 04     |add ecx,4
004C448B   |.  48          |dec eax
004C448C   |.  897C24 10   |mov dword ptr ss:[esp+10],edi
004C4490   |.^ 75 EE       \jnz short hall.004C4480
004C4492   |>  8B4424 10   mov eax,dword ptr ss:[esp+10]
004C4496   |.  8B55 08     mov edx,dword ptr ss:[ebp+8]
004C4499   |.  8BC8        mov ecx,eax
004C449B   |.  C1E9 10     shr ecx,10
004C449E   |.  0FB7C0      movzx eax,ax
004C44A1   |.  69C9 CFAD03>imul ecx,ecx,3ADCF
004C44A7   |.  69C0 CFAD03>imul eax,eax,3ADCF
004C44AD   |.  81C1 EDA626>add ecx,26A6ED
004C44B3   |.  05 EDA62600 add eax,26A6ED
004C44B8   |.  C1E9 10     shr ecx,10
004C44BB   |.  C1E8 10     shr eax,10
004C44BE   |.  C1E1 10     shl ecx,10
004C44C1   |.  0BC8        or ecx,eax
004C44C3   |.  8B4424 14   mov eax,dword ptr ss:[esp+14]
004C44C7   |.  81F1 5AA55A>xor ecx,A55AA55A
004C44CD   |.  898A 880300>mov dword ptr ds:[edx+388],ecx
004C44D3   |.  99          cdq
004C44D4   |.  83E2 03     and edx,3
004C44D7   |.  03C2        add eax,edx
004C44D9   |.  C1F8 02     sar eax,2
004C44DC   |.  85C0        test eax,eax
004C44DE   |.  8DB424 9800>lea esi,dword ptr ss:[esp+98]
004C44E5   |.  894C24 10   mov dword ptr ss:[esp+10],ecx
004C44E9   |.  8BFE        mov edi,esi
004C44EB   |.  7E 41       jle short hall.004C452E
004C44ED   |.  8BD0        mov edx,eax
004C44EF   |.  90          nop
004C44F0   |>  310F        /xor dword ptr ds:[edi],ecx
004C44F2   |.  0FB70E      |movzx ecx,word ptr ds:[esi]
004C44F5   |.  0FB746 02   |movzx eax,word ptr ds:[esi+2]
004C44F9   |.  69C9 CFAD03>|imul ecx,ecx,3ADCF
004C44FF   |.  83C6 02     |add esi,2
004C4502   |.  69C0 CFAD03>|imul eax,eax,3ADCF
004C4508   |.  05 EDA62600 |add eax,26A6ED
004C450D   |.  C1E8 10     |shr eax,10
004C4510   |.  81C1 EDA626>|add ecx,26A6ED
004C4516   |.  C1E0 10     |shl eax,10
004C4519   |.  C1E9 10     |shr ecx,10
004C451C   |.  0BC1        |or eax,ecx
004C451E   |.  35 5AA55AA5 |xor eax,A55AA55A
004C4523   |.  83C7 04     |add edi,4
004C4526   |.  83C6 02     |add esi,2
004C4529   |.  4A          |dec edx
004C452A   |.  8BC8        |mov ecx,eax
004C452C   |.^ 75 C2       \jnz short hall.004C44F0


======================================================================================

小弟我对汇编代码实在看不懂!!!

第一处黄颜色处是  明文包地址

第二处红颜色处是  明文包加密开始.是1字节一字节的变

第二处蓝颜色出是  以上1字节变后..4字节4字节的变

完毕!!!!

有人帮忙吗,搞定可以给酬劳..谢谢

联系QQ:943208333

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不会
2009-2-14 12:08
0
雪    币: 58
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这段代码其实不复杂。如果仅仅分析LZ所说的第二处红颜色处、第三处蓝颜色处,还是很好理解的,不过因为是静态分析,所以里面的具体细节暂时无法精确表述,特别是里面涉及的几个内存查表,只有通过动态分析才能知晓其中内容。
2009-2-14 23:23
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上能不能帮我看看~~
2009-2-15 10:54
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
黄颜色处 明文包地址,红颜色处明文包1字节1字节加密码开始
以下黑颜色处.明文包未有变化..蓝颜色处开始4字节4字节的变!!
2009-2-15 10:55
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
简单分析了一下,不知道对不对对。

红色部分:
BYTE seed1=?            //第一次004C43AA时AL的值
BYTE LookupTable[256];    //offset 0058F750

//这里packet[]为BYTE数组
for (int i=0; i<packet_length; i++)
{
    packet[i] = LookupTable[packet[i]+seed1];
    seed1 += 3;
}

蓝色部分:
DWORD seed2=?            //004C44EF时ECX的值
DWORD dwHigh;
DWORD dwLow;

//以下packet[]为DWORD数组
for (int i=0; i<??; i++)    //循环次数为004C44EF时EDX的值
{
    packet[i] ^= seed2;
    dwLow = (((packet[i] & 0x0FFFF) * 0x3ADCF + 0x26A6ED) >> 16) & 0x0FFFF;
    dwHigh = (((packet[i] >> 16) & 0x0FFFF) * 0x3ADCF + 0x26A6ED) & 0xFFFF0000;
    seed2 = (dwHigh | dwLow) ^ 0xA55AA55A;
}
2009-2-15 12:48
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=icersg;578397]简单分析了一下,不知道对不对对。

红色部分:
BYTE seed1=?            //第一次004C43AA时AL的值
BYTE LookupTable[256];    //offset 0058F750

//这里packet[]为BYTE数组
for (int i=...[/QUOTE]

谢谢~
2009-2-15 13:20
0
雪    币: 58
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=icersg;578397]简单分析了一下,不知道对不对对。

红色部分:
BYTE seed1=?            //第一次004C43AA时AL的值
BYTE LookupTable[256];    //offset 0058F750

//这里packet[]为BYTE数组
for (int i=...[/QUOTE]
icersg分析没问题。只是正如前所说,LZ没有给出那些查表数据内容,所以其实并没有真正还原出加密算法(即加密算法的本质是什么),不过对LZ应该有帮助的。
2009-2-15 16:20
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不管怎么样.还是要感谢2位的帮助.
2009-2-15 17:14
0
游客
登录 | 注册 方可回帖
返回
//