首页
社区
课程
招聘
[讨论]那们帮分析一下什么算法?附IDA F5结果
2011-8-30 16:28 3986

[讨论]那们帮分析一下什么算法?附IDA F5结果

2011-8-30 16:28
3986
此函数来源于小弟目前更在跟踪的软件.
但怎奈水平实在有限特请教达人帮看一下.

一种很垃圾的key文件注册方式,
谁能告诉我这应该怎么办呢?

0062DC20 >/$  53            push ebx      
0062DC21  |.  56            push esi
0062DC22  |.  57            push edi
0062DC23  |.  55            push ebp
0062DC24  |.  BF FE000000   mov edi,0xFE
0062DC29  |.  8BF7          mov esi,edi
0062DC2B  |.  4E            dec esi
0062DC2C  |.  85F6          test esi,esi
0062DC2E  |.  7C 1A         jl XAPPYServ.0062DC4A
0062DC30  |.  46            inc esi
0062DC31  |.  33D2          xor edx,edx
0062DC33  |>  8A8C10 000200>/mov cl,byte ptr ds:[eax+edx+0x200]
0062DC3A  |.  80E9 0C       |sub cl,0xC
0062DC3D  |.  2ACA          |sub cl,dl
0062DC3F  |.  888C10 000200>|mov byte ptr ds:[eax+edx+0x200],cl
0062DC46  |.  42            |inc edx
0062DC47  |.  4E            |dec esi
0062DC48  |.^ 75 E9         \jnz XAPPYServ.0062DC33
0062DC4A  |>  8BF7          mov esi,edi
0062DC4C  |.  4E            dec esi
0062DC4D  |.  85F6          test esi,esi
0062DC4F  |.  7C 1A         jl XAPPYServ.0062DC6B
0062DC51  |.  46            inc esi
0062DC52  |.  33D2          xor edx,edx
0062DC54  |>  8A8C10 000500>/mov cl,byte ptr ds:[eax+edx+0x500]
0062DC5B  |.  80E9 15       |sub cl,0x15
0062DC5E  |.  2ACA          |sub cl,dl
0062DC60  |.  888C10 000500>|mov byte ptr ds:[eax+edx+0x500],cl
0062DC67  |.  42            |inc edx
0062DC68  |.  4E            |dec esi
0062DC69  |.^ 75 E9         \jnz XAPPYServ.0062DC54
0062DC6B  |>  8BF7          mov esi,edi
0062DC6D  |.  4E            dec esi
0062DC6E  |.  85F6          test esi,esi
0062DC70  |.  7C 1A         jl XAPPYServ.0062DC8C
0062DC72  |.  46            inc esi
0062DC73  |.  33D2          xor edx,edx
0062DC75  |>  8A8C10 000900>/mov cl,byte ptr ds:[eax+edx+0x900]
0062DC7C  |.  80E9 0D       |sub cl,0xD
0062DC7F  |.  2ACA          |sub cl,dl
0062DC81  |.  888C10 000900>|mov byte ptr ds:[eax+edx+0x900],cl
0062DC88  |.  42            |inc edx
0062DC89  |.  4E            |dec esi
0062DC8A  |.^ 75 E9         \jnz XAPPYServ.0062DC75
0062DC8C  |>  8BF7          mov esi,edi
0062DC8E  |.  4E            dec esi
0062DC8F  |.  85F6          test esi,esi
0062DC91  |.  7C 1A         jl XAPPYServ.0062DCAD
0062DC93  |.  46            inc esi
0062DC94  |.  33D2          xor edx,edx
0062DC96  |>  8A8C10 000A00>/mov cl,byte ptr ds:[eax+edx+0xA00]
0062DC9D  |.  80E9 0D       |sub cl,0xD
0062DCA0  |.  2ACA          |sub cl,dl
0062DCA2  |.  888C10 000A00>|mov byte ptr ds:[eax+edx+0xA00],cl
0062DCA9  |.  42            |inc edx
0062DCAA  |.  4E            |dec esi
0062DCAB  |.^ 75 E9         \jnz XAPPYServ.0062DC96
0062DCAD  |>  8BF7          mov esi,edi
0062DCAF  |.  4E            dec esi
0062DCB0  |.  85F6          test esi,esi
0062DCB2  |.  7C 1A         jl XAPPYServ.0062DCCE
0062DCB4  |.  46            inc esi
0062DCB5  |.  33D2          xor edx,edx
0062DCB7  |>  8A8C10 000B00>/mov cl,byte ptr ds:[eax+edx+0xB00]
0062DCBE  |.  80E9 0D       |sub cl,0xD
0062DCC1  |.  2ACA          |sub cl,dl
0062DCC3  |.  888C10 000B00>|mov byte ptr ds:[eax+edx+0xB00],cl
0062DCCA  |.  42            |inc edx
0062DCCB  |.  4E            |dec esi
0062DCCC  |.^ 75 E9         \jnz XAPPYServ.0062DCB7
0062DCCE  |>  8BF7          mov esi,edi
0062DCD0  |.  4E            dec esi
0062DCD1  |.  85F6          test esi,esi
0062DCD3  |.  7C 12         jl XAPPYServ.0062DCE7
0062DCD5  |.  46            inc esi
0062DCD6  |.  33D2          xor edx,edx
0062DCD8  |>  8A0C10        /mov cl,byte ptr ds:[eax+edx]
0062DCDB  |.  80E9 0C       |sub cl,0xC
0062DCDE  |.  2ACA          |sub cl,dl
0062DCE0  |.  880C10        |mov byte ptr ds:[eax+edx],cl
0062DCE3  |.  42            |inc edx
0062DCE4  |.  4E            |dec esi
0062DCE5  |.^ 75 F1         \jnz XAPPYServ.0062DCD8
0062DCE7  |>  8BF7          mov esi,edi
0062DCE9  |.  4E            dec esi
0062DCEA  |.  85F6          test esi,esi
0062DCEC  |.  7C 1A         jl XAPPYServ.0062DD08
0062DCEE  |.  46            inc esi
0062DCEF  |.  33D2          xor edx,edx
0062DCF1  |>  8A8C10 000100>/mov cl,byte ptr ds:[eax+edx+0x100]
0062DCF8  |.  80E9 15       |sub cl,0x15
0062DCFB  |.  2ACA          |sub cl,dl
0062DCFD  |.  888C10 000100>|mov byte ptr ds:[eax+edx+0x100],cl
0062DD04  |.  42            |inc edx
0062DD05  |.  4E            |dec esi
0062DD06  |.^ 75 E9         \jnz XAPPYServ.0062DCF1
0062DD08  |>  8BF7          mov esi,edi
0062DD0A  |.  4E            dec esi
0062DD0B  |.  85F6          test esi,esi
0062DD0D  |.  7C 1A         jl XAPPYServ.0062DD29
0062DD0F  |.  46            inc esi
0062DD10  |.  33D2          xor edx,edx
0062DD12  |>  8A8C10 000800>/mov cl,byte ptr ds:[eax+edx+0x800]
0062DD19  |.  80E9 0D       |sub cl,0xD
0062DD1C  |.  2ACA          |sub cl,dl
0062DD1E  |.  888C10 000800>|mov byte ptr ds:[eax+edx+0x800],cl
0062DD25  |.  42            |inc edx
0062DD26  |.  4E            |dec esi
0062DD27  |.^ 75 E9         \jnz XAPPYServ.0062DD12
0062DD29  |>  8BF7          mov esi,edi
0062DD2B  |.  4E            dec esi
0062DD2C  |.  85F6          test esi,esi
0062DD2E  |.  7C 1A         jl XAPPYServ.0062DD4A
0062DD30  |.  46            inc esi
0062DD31  |.  33D2          xor edx,edx
0062DD33  |>  8A8C10 000C00>/mov cl,byte ptr ds:[eax+edx+0xC00]
0062DD3A  |.  80E9 0C       |sub cl,0xC
0062DD3D  |.  2ACA          |sub cl,dl
0062DD3F  |.  888C10 000C00>|mov byte ptr ds:[eax+edx+0xC00],cl
0062DD46  |.  42            |inc edx
0062DD47  |.  4E            |dec esi
0062DD48  |.^ 75 E9         \jnz XAPPYServ.0062DD33
0062DD4A  |>  8BF7          mov esi,edi
0062DD4C  |.  4E            dec esi
0062DD4D  |.  85F6          test esi,esi
0062DD4F  |.  7C 1A         jl XAPPYServ.0062DD6B
0062DD51  |.  46            inc esi
0062DD52  |.  33D2          xor edx,edx
0062DD54  |>  8A8C10 000400>/mov cl,byte ptr ds:[eax+edx+0x400]
0062DD5B  |.  80E9 0D       |sub cl,0xD
0062DD5E  |.  2ACA          |sub cl,dl
0062DD60  |.  888C10 000400>|mov byte ptr ds:[eax+edx+0x400],cl
0062DD67  |.  42            |inc edx
0062DD68  |.  4E            |dec esi
0062DD69  |.^ 75 E9         \jnz XAPPYServ.0062DD54
0062DD6B  |>  8BF7          mov esi,edi
0062DD6D  |.  4E            dec esi
0062DD6E  |.  85F6          test esi,esi
0062DD70  |.  7C 1A         jl XAPPYServ.0062DD8C
0062DD72  |.  46            inc esi
0062DD73  |.  33D2          xor edx,edx
0062DD75  |>  8A8C10 000300>/mov cl,byte ptr ds:[eax+edx+0x300]
0062DD7C  |.  80E9 0C       |sub cl,0xC
0062DD7F  |.  2ACA          |sub cl,dl
0062DD81  |.  888C10 000300>|mov byte ptr ds:[eax+edx+0x300],cl
0062DD88  |.  42            |inc edx
0062DD89  |.  4E            |dec esi
0062DD8A  |.^ 75 E9         \jnz XAPPYServ.0062DD75
0062DD8C  |>  8BF7          mov esi,edi
0062DD8E  |.  4E            dec esi
0062DD8F  |.  85F6          test esi,esi
0062DD91  |.  7C 1A         jl XAPPYServ.0062DDAD
0062DD93  |.  46            inc esi
0062DD94  |.  33D2          xor edx,edx
0062DD96  |>  8A8C10 000600>/mov cl,byte ptr ds:[eax+edx+0x600]
0062DD9D  |.  80E9 0D       |sub cl,0xD
0062DDA0  |.  2ACA          |sub cl,dl
0062DDA2  |.  888C10 000600>|mov byte ptr ds:[eax+edx+0x600],cl
0062DDA9  |.  42            |inc edx
0062DDAA  |.  4E            |dec esi
0062DDAB  |.^ 75 E9         \jnz XAPPYServ.0062DD96
0062DDAD  |>  8BF7          mov esi,edi
0062DDAF  |.  4E            dec esi
0062DDB0  |.  85F6          test esi,esi
0062DDB2  |.  7C 1A         jl XAPPYServ.0062DDCE
0062DDB4  |.  46            inc esi
0062DDB5  |.  33D2          xor edx,edx
0062DDB7  |>  8A8C10 000700>/mov cl,byte ptr ds:[eax+edx+0x700]
0062DDBE  |.  80E9 0C       |sub cl,0xC
0062DDC1  |.  2ACA          |sub cl,dl
0062DDC3  |.  888C10 000700>|mov byte ptr ds:[eax+edx+0x700],cl
0062DDCA  |.  42            |inc edx
0062DDCB  |.  4E            |dec esi
0062DDCC  |.^ 75 E9         \jnz XAPPYServ.0062DDB7
0062DDCE  |>  8BB0 000D0000 mov esi,dword ptr ds:[eax+0xD00]
0062DDD4  |.  4E            dec esi
0062DDD5  |.  85F6          test esi,esi
0062DDD7  |.  7C 2D         jl XAPPYServ.0062DE06
0062DDD9  |.  46            inc esi
0062DDDA  |.  33D2          xor edx,edx
0062DDDC  |>  33FF          /xor edi,edi
0062DDDE  |>  6BEA 29       |/imul ebp,edx,0x29
0062DDE1  |.  8D0C28        ||lea ecx,dword ptr ds:[eax+ebp]
0062DDE4  |.  8A8C39 040D00>||mov cl,byte ptr ds:[ecx+edi+0xD04]
0062DDEB  |.  80E9 17       ||sub cl,0x17
0062DDEE  |.  2ACA          ||sub cl,dl
0062DDF0  |.  51            ||push ecx
0062DDF1  |.  8D0C28        ||lea ecx,dword ptr ds:[eax+ebp]
0062DDF4  |.  5B            ||pop ebx
0062DDF5  |.  889C39 040D00>||mov byte ptr ds:[ecx+edi+0xD04],bl
0062DDFC  |.  47            ||inc edi
0062DDFD  |.  83FF 28       ||cmp edi,0x28
0062DE00  |.^ 75 DC         |\jnz XAPPYServ.0062DDDE
0062DE02  |.  42            |inc edx
0062DE03  |.  4E            |dec esi
0062DE04  |.^ 75 D6         \jnz XAPPYServ.0062DDDC
0062DE06  |>  B0 01         mov al,0x1
0062DE08  |.  5D            pop ebp
0062DE09  |.  5F            pop edi
0062DE0A  |.  5E            pop esi
0062DE0B  |.  5B            pop ebx
0062DE0C  \.  C3            retn



下面是IDA   F5后的结果

char __fastcall sub_62DC20(int a1)
{
  int v1; // edx@1
  signed int v2; // esi@1
  int v3; // edx@3
  signed int v4; // esi@3
  int v5; // edx@5
  signed int v6; // esi@5
  int v7; // edx@7
  signed int v8; // esi@7
  int v9; // edx@9
  signed int v10; // esi@9
  int v11; // edx@11
  signed int v12; // esi@11
  int v13; // edx@13
  signed int v14; // esi@13
  int v15; // edx@15
  signed int v16; // esi@15
  int v17; // edx@17
  signed int v18; // esi@17
  int v19; // edx@19
  signed int v20; // esi@19
  int v21; // edx@21
  signed int v22; // esi@21
  int v23; // edx@23
  signed int v24; // esi@23
  int v25; // edx@25
  signed int v26; // esi@25
  int v27; // edx@28
  int v28; // esi@28
  int v29; // edi@29

  v2 = 254;
  v1 = 0;
  do
  {
    *(_BYTE *)(a1 + v1 + 512) = *(_BYTE *)(a1 + v1 + 512) - 12 - v1;
    ++v1;
    --v2;
  }
  while ( v2 );
  v4 = 254;
  v3 = 0;
  do
  {
    *(_BYTE *)(a1 + v3 + 1280) = *(_BYTE *)(a1 + v3 + 1280) - 21 - v3;
    ++v3;
    --v4;
  }
  while ( v4 );
  v6 = 254;
  v5 = 0;
  do
  {
    *(_BYTE *)(a1 + v5 + 2304) = *(_BYTE *)(a1 + v5 + 2304) - 13 - v5;
    ++v5;
    --v6;
  }
  while ( v6 );
  v8 = 254;
  v7 = 0;
  do
  {
    *(_BYTE *)(a1 + v7 + 2560) = *(_BYTE *)(a1 + v7 + 2560) - 13 - v7;
    ++v7;
    --v8;
  }
  while ( v8 );
  v10 = 254;
  v9 = 0;
  do
  {
    *(_BYTE *)(a1 + v9 + 2816) = *(_BYTE *)(a1 + v9 + 2816) - 13 - v9;
    ++v9;
    --v10;
  }
  while ( v10 );
  v12 = 254;
  v11 = 0;
  do
  {
    *(_BYTE *)(a1 + v11) = *(_BYTE *)(a1 + v11) - 12 - v11;
    ++v11;
    --v12;
  }
  while ( v12 );
  v14 = 254;
  v13 = 0;
  do
  {
    *(_BYTE *)(a1 + v13 + 256) = *(_BYTE *)(a1 + v13 + 256) - 21 - v13;
    ++v13;
    --v14;
  }
  while ( v14 );
  v16 = 254;
  v15 = 0;
  do
  {
    *(_BYTE *)(a1 + v15 + 2048) = *(_BYTE *)(a1 + v15 + 2048) - 13 - v15;
    ++v15;
    --v16;
  }
  while ( v16 );
  v18 = 254;
  v17 = 0;
  do
  {
    *(_BYTE *)(a1 + v17 + 3072) = *(_BYTE *)(a1 + v17 + 3072) - 12 - v17;
    ++v17;
    --v18;
  }
  while ( v18 );
  v20 = 254;
  v19 = 0;
  do
  {
    *(_BYTE *)(a1 + v19 + 1024) = *(_BYTE *)(a1 + v19 + 1024) - 13 - v19;
    ++v19;
    --v20;
  }
  while ( v20 );
  v22 = 254;
  v21 = 0;
  do
  {
    *(_BYTE *)(a1 + v21 + 768) = *(_BYTE *)(a1 + v21 + 768) - 12 - v21;
    ++v21;
    --v22;
  }
  while ( v22 );
  v24 = 254;
  v23 = 0;
  do
  {
    *(_BYTE *)(a1 + v23 + 1536) = *(_BYTE *)(a1 + v23 + 1536) - 13 - v23;
    ++v23;
    --v24;
  }
  while ( v24 );
  v26 = 254;
  v25 = 0;
  do
  {
    *(_BYTE *)(a1 + v25 + 1792) = *(_BYTE *)(a1 + v25 + 1792) - 12 - v25;
    ++v25;
    --v26;
  }
  while ( v26 );
  if ( *(_DWORD *)(a1 + 3328) - 1 >= 0 )
  {
    v28 = *(_DWORD *)(a1 + 3328);
    v27 = 0;
    do
    {
      v29 = 0;
      do
      {
        *(_BYTE *)(a1 + 41 * v27 + v29 + 3332) = *(_BYTE *)(a1 + 41 * v27 + v29 + 3332) - 23 - v27;
        ++v29;
      }
      while ( v29 != 40 );
      ++v27;
      --v28;
    }
    while ( v28 );
  }
  return 1;
}

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回