004067D0  /$  51            push    ecx
004067D1  |.  8B4C24 08     mov     ecx, dword ptr [esp+8]
004067D5  |.  53            push    ebx
004067D6  |.  55            push    ebp
004067D7  |.  56            push    esi
004067D8  |.  8B01          mov     eax, dword ptr [ecx]
004067DA  |.  8B51 04       mov     edx, dword ptr [ecx+4]
004067DD  |.  8BC8          mov     ecx, eax
004067DF  |.  8BF2          mov     esi, edx
004067E1  |.  C1E9 04       shr     ecx, 4
004067E4  |.  81E1 0F0F0F0F and     ecx, 0F0F0F0F
004067EA  |.  81E6 0F0F0F0F and     esi, 0F0F0F0F
004067F0  |.  33CE          xor     ecx, esi
004067F2  |.  57            push    edi
004067F3  |.  33D1          xor     edx, ecx
004067F5  |.  C74424 10 080>mov     dword ptr [esp+10], 8
004067FD  |.  C1E1 04       shl     ecx, 4
00406800  |.  33C1          xor     eax, ecx
00406802  |.  8BF2          mov     esi, edx
00406804  |.  8BC8          mov     ecx, eax
00406806  |.  81E6 FFFF0000 and     esi, 0FFFF
0040680C  |.  C1E9 10       shr     ecx, 10
0040680F  |.  33CE          xor     ecx, esi
00406811  |.  33D1          xor     edx, ecx
00406813  |.  C1E1 10       shl     ecx, 10
00406816  |.  33C1          xor     eax, ecx
00406818  |.  8BCA          mov     ecx, edx
0040681A  |.  C1E9 02       shr     ecx, 2
0040681D  |.  8BF0          mov     esi, eax
0040681F  |.  81E1 33333333 and     ecx, 33333333
00406825  |.  81E6 33333333 and     esi, 33333333
0040682B  |.  33CE          xor     ecx, esi
0040682D  |.  33C1          xor     eax, ecx
0040682F  |.  C1E1 02       shl     ecx, 2
00406832  |.  33D1          xor     edx, ecx
00406834  |.  8BF0          mov     esi, eax
00406836  |.  8BCA          mov     ecx, edx
00406838  |.  81E6 FF00FF00 and     esi, 0FF00FF
0040683E  |.  C1E9 08       shr     ecx, 8
00406841  |.  81E1 FF00FF00 and     ecx, 0FF00FF
00406847  |.  33CE          xor     ecx, esi
00406849  |.  8B7424 1C     mov     esi, dword ptr [esp+1C]
0040684D  |.  33C1          xor     eax, ecx
0040684F  |.  C1E1 08       shl     ecx, 8
00406852  |.  33D1          xor     edx, ecx
00406854  |.  8BCA          mov     ecx, edx
00406856  |.  03D2          add     edx, edx
00406858  |.  C1E9 1F       shr     ecx, 1F
0040685B  |.  0BCA          or      ecx, edx
0040685D  |.  8BD1          mov     edx, ecx
0040685F  |.  33D0          xor     edx, eax
00406861  |.  81E2 AAAAAAAA and     edx, AAAAAAAA
00406867  |.  33C2          xor     eax, edx
00406869  |.  33CA          xor     ecx, edx
0040686B  |.  8BD0          mov     edx, eax
0040686D  |.  03C0          add     eax, eax
0040686F  |.  C1EA 1F       shr     edx, 1F
00406872  |.  0BD0          or      edx, eax
00406874  |>  8B1E          /mov     ebx, dword ptr [esi]
00406876  |.  8BC1          |mov     eax, ecx
00406878  |.  8BF9          |mov     edi, ecx
0040687A  |.  83C6 04       |add     esi, 4
0040687D  |.  C1E0 1C       |shl     eax, 1C
00406880  |.  C1EF 04       |shr     edi, 4
00406883  |.  0BC7          |or      eax, edi
00406885  |.  83C6 04       |add     esi, 4
00406888  |.  33C3          |xor     eax, ebx
0040688A  |.  83C6 04       |add     esi, 4
0040688D  |.  8BD8          |mov     ebx, eax
0040688F  |.  8BF8          |mov     edi, eax
00406891  |.  C1EB 10       |shr     ebx, 10
00406894  |.  83E3 3F       |and     ebx, 3F
00406897  |.  83C6 04       |add     esi, 4
0040689A  |.  C1EF 18       |shr     edi, 18
0040689D  |.  8B2C9D 145941>|mov     ebp, dword ptr [ebx*4+415914]
004068A4  |.  8BD8          |mov     ebx, eax
004068A6  |.  83E7 3F       |and     edi, 3F
004068A9  |.  83E0 3F       |and     eax, 3F
004068AC  |.  C1EB 08       |shr     ebx, 8
004068AF  |.  8B3CBD 145741>|mov     edi, dword ptr [edi*4+415714]
004068B6  |.  83E3 3F       |and     ebx, 3F
004068B9  |.  0BFD          |or      edi, ebp
004068BB  |.  8B2C9D 145B41>|mov     ebp, dword ptr [ebx*4+415B14]
004068C2  |.  8B1C85 145D41>|mov     ebx, dword ptr [eax*4+415D14]
004068C9  |.  8B46 F4       |mov     eax, dword ptr [esi-C]
004068CC  |.  0BFD          |or      edi, ebp
004068CE  |.  33C1          |xor     eax, ecx
004068D0  |.  0BFB          |or      edi, ebx
004068D2  |.  8BD8          |mov     ebx, eax
004068D4  |.  8BE8          |mov     ebp, eax
004068D6  |.  C1EB 18       |shr     ebx, 18
004068D9  |.  83E3 3F       |and     ebx, 3F
004068DC  |.  C1ED 10       |shr     ebp, 10
004068DF  |.  8B1C9D 145841>|mov     ebx, dword ptr [ebx*4+415814]
004068E6  |.  83E5 3F       |and     ebp, 3F
004068E9  |.  0B1CAD 145A41>|or      ebx, dword ptr [ebp*4+415A14]
004068F0  |.  8BE8          |mov     ebp, eax
004068F2  |.  C1ED 08       |shr     ebp, 8
004068F5  |.  83E5 3F       |and     ebp, 3F
004068F8  |.  83E0 3F       |and     eax, 3F
004068FB  |.  0B1CAD 145C41>|or      ebx, dword ptr [ebp*4+415C14]
00406902  |.  8B2C85 145E41>|mov     ebp, dword ptr [eax*4+415E14]
00406909  |.  0BDD          |or      ebx, ebp
0040690B  |.  0BDF          |or      ebx, edi
0040690D  |.  33D3          |xor     edx, ebx
0040690F  |.  8B5E F8       |mov     ebx, dword ptr [esi-8]
00406912  |.  8BC2          |mov     eax, edx
00406914  |.  8BFA          |mov     edi, edx
00406916  |.  C1E0 1C       |shl     eax, 1C
00406919  |.  C1EF 04       |shr     edi, 4
0040691C  |.  0BC7          |or      eax, edi
0040691E  |.  33C3          |xor     eax, ebx
00406920  |.  8BD8          |mov     ebx, eax
00406922  |.  8BF8          |mov     edi, eax
00406924  |.  C1EB 10       |shr     ebx, 10
00406927  |.  83E3 3F       |and     ebx, 3F
0040692A  |.  C1EF 18       |shr     edi, 18
0040692D  |.  8B2C9D 145941>|mov     ebp, dword ptr [ebx*4+415914]
00406934  |.  8BD8          |mov     ebx, eax
00406936  |.  83E7 3F       |and     edi, 3F
00406939  |.  83E0 3F       |and     eax, 3F
0040693C  |.  C1EB 08       |shr     ebx, 8
0040693F  |.  8B3CBD 145741>|mov     edi, dword ptr [edi*4+415714]
00406946  |.  83E3 3F       |and     ebx, 3F
00406949  |.  0BFD          |or      edi, ebp
0040694B  |.  8B2C9D 145B41>|mov     ebp, dword ptr [ebx*4+415B14]
00406952  |.  8B1C85 145D41>|mov     ebx, dword ptr [eax*4+415D14]
00406959  |.  8B46 FC       |mov     eax, dword ptr [esi-4]
0040695C  |.  0BFD          |or      edi, ebp
0040695E  |.  33C2          |xor     eax, edx
00406960  |.  0BFB          |or      edi, ebx
00406962  |.  8BD8          |mov     ebx, eax
00406964  |.  8BE8          |mov     ebp, eax
00406966  |.  C1EB 18       |shr     ebx, 18
00406969  |.  83E3 3F       |and     ebx, 3F
0040696C  |.  C1ED 10       |shr     ebp, 10
0040696F  |.  8B1C9D 145841>|mov     ebx, dword ptr [ebx*4+415814]
00406976  |.  83E5 3F       |and     ebp, 3F
00406979  |.  0B1CAD 145A41>|or      ebx, dword ptr [ebp*4+415A14]
00406980  |.  8BE8          |mov     ebp, eax
00406982  |.  83E0 3F       |and     eax, 3F
00406985  |.  C1ED 08       |shr     ebp, 8
00406988  |.  83E5 3F       |and     ebp, 3F
0040698B  |.  0B1CAD 145C41>|or      ebx, dword ptr [ebp*4+415C14]
00406992  |.  8B2C85 145E41>|mov     ebp, dword ptr [eax*4+415E14]
00406999  |.  8B4424 10     |mov     eax, dword ptr [esp+10]
0040699D  |.  0BDD          |or      ebx, ebp
0040699F  |.  0BDF          |or      ebx, edi
004069A1  |.  33CB          |xor     ecx, ebx
004069A3  |.  48            |dec     eax
004069A4  |.  894424 10     |mov     dword ptr [esp+10], eax
004069A8  |.^ 0F85 C6FEFFFF \jnz     00406874
004069AE  |.  8BC1          mov     eax, ecx
004069B0  |.  5F            pop     edi                              ;  0012EF90
004069B1  |.  C1E0 1F       shl     eax, 1F
004069B4  |.  D1E9          shr     ecx, 1
004069B6  |.  0BC1          or      eax, ecx
004069B8  |.  8BC8          mov     ecx, eax
004069BA  |.  33CA          xor     ecx, edx
004069BC  |.  81E1 AAAAAAAA and     ecx, AAAAAAAA
004069C2  |.  33D1          xor     edx, ecx
004069C4  |.  33C1          xor     eax, ecx
004069C6  |.  8BCA          mov     ecx, edx
004069C8  |.  8BF0          mov     esi, eax
004069CA  |.  C1E1 1F       shl     ecx, 1F
004069CD  |.  D1EA          shr     edx, 1
004069CF  |.  0BCA          or      ecx, edx
004069D1  |.  81E6 FF00FF00 and     esi, 0FF00FF
004069D7  |.  8BD1          mov     edx, ecx
004069D9  |.  C1EA 08       shr     edx, 8
004069DC  |.  81E2 FF00FF00 and     edx, 0FF00FF
004069E2  |.  33D6          xor     edx, esi
004069E4  |.  33C2          xor     eax, edx
004069E6  |.  C1E2 08       shl     edx, 8
004069E9  |.  33CA          xor     ecx, edx
004069EB  |.  8BF0          mov     esi, eax
004069ED  |.  8BD1          mov     edx, ecx
004069EF  |.  81E6 33333333 and     esi, 33333333
004069F5  |.  C1EA 02       shr     edx, 2
004069F8  |.  81E2 33333333 and     edx, 33333333
004069FE  |.  33D6          xor     edx, esi
00406A00  |.  33C2          xor     eax, edx
00406A02  |.  C1E2 02       shl     edx, 2
00406A05  |.  33CA          xor     ecx, edx
00406A07  |.  8BD0          mov     edx, eax
00406A09  |.  8BF1          mov     esi, ecx
00406A0B  |.  C1EA 10       shr     edx, 10
00406A0E  |.  81E6 FFFF0000 and     esi, 0FFFF
00406A14  |.  33D6          xor     edx, esi
00406A16  |.  33CA          xor     ecx, edx
00406A18  |.  C1E2 10       shl     edx, 10
00406A1B  |.  33C2          xor     eax, edx
00406A1D  |.  8BF1          mov     esi, ecx
00406A1F  |.  8BD0          mov     edx, eax
00406A21  |.  81E6 0F0F0F0F and     esi, 0F0F0F0F
00406A27  |.  C1EA 04       shr     edx, 4
00406A2A  |.  81E2 0F0F0F0F and     edx, 0F0F0F0F
00406A30  |.  33D6          xor     edx, esi
00406A32  |.  8BF2          mov     esi, edx
00406A34  |.  C1E6 04       shl     esi, 4
00406A37  |.  33F0          xor     esi, eax
00406A39  |.  8B4424 14     mov     eax, dword ptr [esp+14]
00406A3D  |.  33D1          xor     edx, ecx
00406A3F  |.  8930          mov     dword ptr [eax], esi
00406A41  |.  5E            pop     esi
00406A42  |.  5D            pop     ebp
00406A43  |.  8950 04       mov     dword ptr [eax+4], edx
00406A46  |.  5B            pop     ebx
00406A47  |.  59            pop     ecx
00406A48  \.  C3            retn

  • 标 题: 答复
  • 作 者:scz
  • 时 间:2007-12-31 11:54

引用:

最初由 网络断魂发布 (帖子 397711)
老大静态看代码都能看得出??太强了,膜拜!
是不是通过IP变换看出来的?

DES有一个基础函数,其中有几段很明显的操作,比如这是其中之一:

    work    = ( ( left  >>  4 ) ^ right ) & 0x0F0F0F0F;
    right  ^= work;
    left   ^= ( work <<  4 );
    work    = ( ( left  >> 16 ) ^ right ) & 0x0000FFFF;
    right  ^= work;
    left   ^= ( work << 16 );
    work    = ( ( right >>  2 ) ^ left  ) & 0x33333333;
    left   ^= work;
    right  ^= ( work <<  2 );
    work    = ( ( right >>  8 ) ^ left  ) & 0x00FF00FF;

所以,一般看到这几个特征值出现,就不差不远了。不确认的话,可以再看看运算过程是否
匹配。

这种特征识别说白了很简单,你只要跟这些算法的C语言描述打过交道,有个印像,下次就算
记不完整了,打开.c看两眼就恢复记忆了。再就是这种事干多了,也就有条件反射了。