吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1919|回复: 4
收起左侧

[求助] 这个算注册算法吧?

[复制链接]
冥界3大法王 发表于 2019-10-11 14:13
00487FA0   $  81EC 14020000 sub esp, 214
00487FA6   .  A1 9C496A00   mov eax, dword ptr ds:[6A499C]
00487FAB   .  33C4          xor eax, esp
00487FAD   .  898424 100200>mov dword ptr ss:[esp+210], eax
00487FB4   .  8B8424 200200>mov eax, dword ptr ss:[esp+220]          ;  0048827B
00487FBB   .  55            push ebp
00487FBC   .  8BAC24 200200>mov ebp, dword ptr ss:[esp+220]          ;  0048827B
00487FC3   .  56            push esi
00487FC4   .  57            push edi
00487FC5   .  8BF9          mov edi, ecx
00487FC7   .  894424 0C     mov dword ptr ss:[esp+C], eax
00487FCB   .  8B8424 240200>mov eax, dword ptr ss:[esp+224]
00487FD2   .  33C9          xor ecx, ecx
00487FD4   .  33D2          xor edx, edx
00487FD6   .  33F6          xor esi, esi
00487FD8   .  66:3908       cmp word ptr ds:[eax], cx
00487FDB   .  896C24 10     mov dword ptr ss:[esp+10], ebp
00487FDF   .  74 2D         je short 0048800E
00487FE1   >  83C0 02       add eax, 2
00487FE4   .  83C1 01       add ecx, 1
00487FE7   .  66:3910       cmp word ptr ds:[eax], dx
00487FEA   .^ 75 F5         jnz short 00487FE1                  ;  向上跳,显然是个循环按位取 注册名每一位的过程
00487FEC   .  81F9 FF000000 cmp ecx, 0FF
00487FF2   .  76 1A         jbe short 0048800E
00487FF4   >  5F            pop edi                                  ;  0019CB40
00487FF5   .  5E            pop esi                                  ;  0019CB40
00487FF6   .  33C0          xor eax, eax
00487FF8   .  5D            pop ebp                                  ;  0019CB40
00487FF9   .  8B8C24 100200>mov ecx, dword ptr ss:[esp+210]          ;  005FCDFA
00488000   .  33CC          xor ecx, esp
00488002   .  E8 A35D1600   call 005EDDAA
00488007   .  81C4 14020000 add esp, 214
0048800D   .  C3            retn
0048800E   >  0FB707        movzx eax, word ptr ds:[edi]
00488011   .  33C9          xor ecx, ecx
00488013   .  66:85C0       test ax, ax
00488016   .^ 74 DC         je short 00487FF4
00488018   .  0FB7C0        movzx eax, ax
0048801B   .  EB 03         jmp short 00488020
0048801D      8D49 00       lea ecx, dword ptr ds:[ecx]
00488020   >  66:3D 3000    cmp ax, 30                               ;  取到了注册码的第一位 43 (C)估计从这开始
00488024   .  72 0E         jb short 00488034
00488026   .  66:3D 3900    cmp ax, 39
0048802A   .  77 08         ja short 00488034
0048802C   .  0FB7C0        movzx eax, ax
0048802F   .  83E8 30       sub eax, 30
00488032   .  EB 26         jmp short 0048805A
00488034   >  66:3D 4100    cmp ax, 41
00488038   .  72 0E         jb short 00488048
0048803A   .  66:3D 4600    cmp ax, 46
0048803E   .  77 08         ja short 00488048
00488040   .  0FB7C0        movzx eax, ax
00488043   .  83E8 37       sub eax, 37
00488046   .  EB 12         jmp short 0048805A
00488048   >  66:3D 6100    cmp ax, 61
0048804C   .^ 72 A6         jb short 00487FF4
0048804E   .  66:3D 6600    cmp ax, 66
00488052   .^ 77 A0         ja short 00487FF4
00488054   .  0FB7C0        movzx eax, ax
00488057   .  83E8 57       sub eax, 57
0048805A   >  C1E2 04       shl edx, 4
0048805D   .  83C1 01       add ecx, 1
00488060   .  03D0          add edx, eax
00488062   .  0FB7044F      movzx eax, word ptr ds:[edi+ecx*2]
00488066   .  83C6 01       add esi, 1
00488069   .  66:85C0       test ax, ax
0048806C   .^ 75 B2         jnz short 00488020                  ;  向上跳,同理注册码的按位循环
0048806E   .  83FE 08       cmp esi, 8
00488071   .^ 75 81         jnz short 00487FF4
00488073   .  53            push ebx
00488074   .  8B1D E4C26A00 mov ebx, dword ptr ds:[6AC2E4]
0048807A   .  BE 01000000   mov esi, 1
0048807F   .  33FF          xor edi, edi
00488081   .  3BDE          cmp ebx, esi
00488083   .  8BC6          mov eax, esi
00488085   .  7C 2A         jl short 004880B1                   ;  改这会如何呢?
00488087   .  EB 07         jmp short 00488090
00488089   .  8DA424 000000>lea esp, dword ptr ss:[esp]
00488090   >  8B0C85 E4C26A>mov ecx, dword ptr ds:[eax*4+6AC2E4]
00488097   .  BD 01000000   mov ebp, 1
0048809C   .  D3E5          shl ebp, cl
0048809E   .  85EA          test edx, ebp
004880A0   .  74 02         je short 004880A4                   ;  ???????????
004880A2   .  0BFE          or edi, esi
004880A4   >  83C0 01       add eax, 1
004880A7   .  03F6          add esi, esi
004880A9   .  3BC3          cmp eax, ebx
004880AB   .^ 7E E3         jle short 00488090                  ;  yes
004880AD   .  8B6C24 14     mov ebp, dword ptr ss:[esp+14]
004880B1   >  81E2 FFFFFF1F and edx, 1FFFFFFF
004880B7   .  8BF2          mov esi, edx
004880B9   .  83E6 7F       and esi, 7F
004880BC   .  B9 1D000000   mov ecx, 1D
004880C1   .  2BCF          sub ecx, edi
004880C3   .  D3E6          shl esi, cl
004880C5   .  8BCF          mov ecx, edi
004880C7   .  D3FA          sar edx, cl
004880C9   .  81E6 FFFFFF1F and esi, 1FFFFFFF
004880CF   .  0BF2          or esi, edx
004880D1   .  33C9          xor ecx, ecx
004880D3   .  8BC6          mov eax, esi
004880D5   .  8D51 0B       lea edx, dword ptr ds:[ecx+B]
004880D8   >  8BD8          mov ebx, eax
004880DA   .  83E3 07       and ebx, 7
004880DD   .  33CB          xor ecx, ebx
004880DF   .  C1F8 03       sar eax, 3
004880E2   .  83EA 01       sub edx, 1
004880E5   .^ 75 F1         jnz short 004880D8
004880E7   .  3BF9          cmp edi, ecx
004880E9   .  0F85 08010000 jnz 004881F7
004880EF   .  56            push esi
004880F0   .  BB 70C26A00   mov ebx, 006AC270
004880F5   .  E8 26FCFFFF   call 00487D20
004880FA   .  56            push esi
004880FB   .  BB 5CC26A00   mov ebx, 006AC25C
00488100   .  894424 1C     mov dword ptr ss:[esp+1C], eax
00488104   .  E8 17FCFFFF   call 00487D20
00488109   .  56            push esi
0048810A   .  BB B8C26A00   mov ebx, 006AC2B8
0048810F   .  8945 04       mov dword ptr ss:[ebp+4], eax
00488112   .  E8 09FCFFFF   call 00487D20
00488117   .  56            push esi
00488118   .  BB D0C26A00   mov ebx, 006AC2D0
0048811D   .  8945 00       mov dword ptr ss:[ebp], eax
00488120   .  E8 FBFBFFFF   call 00487D20
00488125   .  83C4 10       add esp, 10
00488128   .  83F8 06       cmp eax, 6
0048812B   .  8945 08       mov dword ptr ss:[ebp+8], eax
0048812E   .  75 16         jnz short 00488146                  ;  yes
00488130   .  837D 04 0F    cmp dword ptr ss:[ebp+4], 0F
00488134   .  75 10         jnz short 00488146
00488136   .  837D 00 1F    cmp dword ptr ss:[ebp], 1F
0048813A   .  75 0A         jnz short 00488146
0048813C   .  33C0          xor eax, eax
0048813E   .  8945 00       mov dword ptr ss:[ebp], eax
00488141   .  8945 04       mov dword ptr ss:[ebp+4], eax
00488144   .  EB 05         jmp short 0048814B
00488146   >  05 D9070000   add eax, 7D9
0048814B   >  8945 08       mov dword ptr ss:[ebp+8], eax
0048814E   .  8B8424 280200>mov eax, dword ptr ss:[esp+228]
00488155   .  8D7C24 18     lea edi, dword ptr ss:[esp+18]
00488159   .  2BF8          sub edi, eax
0048815B   .  EB 03         jmp short 00488160
0048815D      8D49 00       lea ecx, dword ptr ds:[ecx]
00488160   >  0FB708        movzx ecx, word ptr ds:[eax]
00488163   .  33D2          xor edx, edx
00488165   .  66:85C9       test cx, cx
00488168   .  0f95c2        setne dl                                 ;  为真
0048816B   .  66:890C07     mov word ptr ds:[edi+eax], cx
0048816F   .  83C0 02       add eax, 2
00488172   .  85D2          test edx, edx
00488174   .^ 75 EA         jnz short 00488160                  ;  yes
00488176   .  56            push esi
00488177   .  BB B0C26A00   mov ebx, 006AC2B0
0048817C   .  E8 9FFBFFFF   call 00487D20
00488181   .  83C4 04       add esp, 4
00488184   .  85C0          test eax, eax
00488186   .  74 60         je short 004881E8
00488188   .  33C9          xor ecx, ecx
0048818A   .  66:394C24 18  cmp word ptr ss:[esp+18], cx
0048818F   .  8D4424 18     lea eax, dword ptr ss:[esp+18]
00488193   .  74 0C         je short 004881A1
00488195   >  83C0 02       add eax, 2
00488198   .  83C1 01       add ecx, 1
0048819B   .  66:8338 00    cmp word ptr ds:[eax], 0
0048819F   .^ 75 F4         jnz short 00488195
004881A1   >  BE F4656500   mov esi, 006565F4                   ;  ASCII "1074"
004881A6   .  8BC6          mov eax, esi
004881A8   .  8D4C4C 18     lea ecx, dword ptr ss:[esp+ecx*2+18]
004881AC   .  8D78 01       lea edi, dword ptr ds:[eax+1]
004881AF   .  90            nop
004881B0   >  8A10          mov dl, byte ptr ds:[eax]
004881B2   .  83C0 01       add eax, 1
004881B5   .  84D2          test dl, dl
004881B7   .^ 75 F7         jnz short 004881B0
004881B9   .  2BC7          sub eax, edi
004881BB   .  83C0 01       add eax, 1
004881BE   .  83F8 05       cmp eax, 5
004881C1   .  7E 0D         jle short 004881D0
004881C3   .  B8 04000000   mov eax, 4
004881C8   .  66:C741 08 00>mov word ptr ds:[ecx+8], 0
004881CE   .  EB 04         jmp short 004881D4
004881D0   >  85C0          test eax, eax
004881D2   .  74 14         je short 004881E8
004881D4   >  66:0FBE16     movsx dx, byte ptr ds:[esi]
004881D8   .  83E8 01       sub eax, 1
004881DB   .  66:8911       mov word ptr ds:[ecx], dx
004881DE   .  83C6 01       add esi, 1
004881E1   .  83C1 02       add ecx, 2
004881E4   .  85C0          test eax, eax
004881E6   .^ 75 EC         jnz short 004881D4
004881E8   >  8D7C24 18     lea edi, dword ptr ss:[esp+18]
004881EC   .  E8 CFFAFFFF   call 00487CC0
004881F1   .  394424 14     cmp dword ptr ss:[esp+14], eax
004881F5   .  74 04         je short 004881FB
004881F7   >  33C0          xor eax, eax
004881F9   .  EB 26         jmp short 00488221
004881FB   >  8B7424 10     mov esi, dword ptr ss:[esp+10]
004881FF   .  85F6          test esi, esi
00488201   .  74 19         je short 0048821C
00488203   .  8D7C24 10     lea edi, dword ptr ss:[esp+10]
00488207   .  8BD6          mov edx, esi
00488209   .  E8 F2FCFFFF   call 00487F00
0048820E   .  85C0          test eax, eax
00488210   .  74 0A         je short 0048821C
00488212   .  8B4424 10     mov eax, dword ptr ss:[esp+10]
00488216   .  8986 08060000 mov dword ptr ds:[esi+608], eax
0048821C   >  B8 01000000   mov eax, 1
00488221   >  8B8C24 200200>mov ecx, dword ptr ss:[esp+220]          ;  0048827B
00488228   .  5B            pop ebx                                  ;  0019CB40
00488229   .  5F            pop edi                                  ;  0019CB40
0048822A   .  5E            pop esi                                  ;  0019CB40
0048822B   .  5D            pop ebp                                  ;  0019CB40
0048822C   .  33CC          xor ecx, esp
0048822E   .  E8 775B1600   call 005EDDAA
00488233   .  81C4 14020000 add esp, 214
00488239   .  C3            retn

[Asm] 纯文本查看 复制代码
signed int __cdecl sub_487FA0(_WORD *a1, int a2, int a3)
{
  unsigned __int16 *v3; // ecx
  _DWORD *v4; // ebp
  unsigned __int16 *v5; // edi
  _WORD *v6; // eax
  unsigned int v7; // ecx
  int v8; // edx
  int v9; // esi
  bool v10; // zf
  unsigned __int16 v12; // ax
  int v13; // ecx
  int v14; // eax
  signed int v15; // esi
  int v16; // edi
  int v17; // eax
  int v18; // esi
  int v19; // ecx
  int v20; // eax
  signed int v21; // edx
  int v22; // eax
  int v23; // eax
  __int16 *v24; // eax
  __int16 v25; // cx
  __int16 *v26; // ecx
  int v27; // ecx
  __int16 *i; // eax
  const char *v29; // esi
  signed int v30; // eax
  int v31; // ecx
  int v32; // esi
  int v33; // [esp+Ch] [ebp-214h]
  _DWORD *v34; // [esp+10h] [ebp-210h]
  __int16 v35[260]; // [esp+14h] [ebp-20Ch]

  v4 = (_DWORD *)a2;
  v5 = v3;
  v33 = a3;
  v6 = a1;
  v7 = 0;
  v8 = 0;
  v9 = 0;
  v10 = *a1 == 0;
  v34 = (_DWORD *)a2;
  if ( !v10 )
  {
    do
    {
      ++v6;
      ++v7;
    }
    while ( *v6 );
    if ( v7 > 0xFF )
      return 0;
  }
  v12 = *v5;
  v13 = 0;
  if ( !*v5 )
    return 0;
  do
  {
    if ( v12 < 0x30u || v12 > 0x39u )
    {
      if ( v12 < 0x41u || v12 > 0x46u )
      {
        if ( v12 < 0x61u || v12 > 0x66u )
          return 0;
        v14 = v12 - 0x57;
      }
      else
      {
        v14 = v12 - 0x37;
      }
    }
    else
    {
      v14 = v12 - 0x30;
    }
    ++v13;
    v8 = v14 + 0x10 * v8;
    v12 = v5[v13];
    ++v9;
  }
  while ( v12 );
  if ( v9 != 8 )
    return 0;
  v15 = 1;
  v16 = 0;
  v17 = 1;
  if ( dword_6AC2E4[0] >= 1 )
  {
    do
    {
      if ( (1 << dword_6AC2E4[v17]) & v8 )
        v16 |= v15;
      ++v17;
      v15 *= 2;
    }
    while ( v17 <= dword_6AC2E4[0] );
    v4 = v34;
  }
  v18 = ((v8 & 0x1FFFFFFF) >> v16) | ((v8 & 0x7F) << (0x1D - v16)) & 0x1FFFFFFF;
  v19 = 0;
  v20 = ((v8 & 0x1FFFFFFF) >> v16) | ((v8 & 0x7F) << (0x1D - v16)) & 0x1FFFFFFF;
  v21 = 0xB;
  do
  {
    v19 ^= v20 & 7;
    v20 >>= 3;
    --v21;
  }
  while ( v21 );
  if ( v16 != v19 )
    return 0;
  v34 = (_DWORD *)sub_487D20(v18);
  v4[1] = sub_487D20(v18);
  *v4 = sub_487D20(v18);
  v22 = sub_487D20(v18);
  v4[2] = v22;
  if ( v22 != 6 || v4[1] != 0xF || *v4 != 0x1F )
  {
    v23 = v22 + 0x7D9;
  }
  else
  {
    v23 = 0;
    *v4 = 0;
    v4[1] = 0;
  }
  v4[2] = v23;
  v24 = a1;
  do
  {
    v25 = *v24;
    *(__int16 *)((char *)v24 + (char *)v35 - (char *)a1) = *v24;
    ++v24;
  }
  while ( v25 );
  if ( !sub_487D20(v18) )
    goto LABEL_39;
  v27 = 0;
  for ( i = v35; *i; ++v27 )
    ++i;
  v29 = "1074";
  v26 = &v35[v27];
  v30 = strlen("1074") + 1;
  if ( v30 <= 5 )
  {
    if ( !v30 )
      goto LABEL_39;
  }
  else
  {
    v30 = 4;
    v26[4] = 0;
  }
  do
  {
    --v30;
    *v26 = *v29++;
    ++v26;
  }
  while ( v30 );
LABEL_39:
  if ( v34 != (_DWORD *)sub_487CC0(v26) )
    return 0;
  v32 = v33;
  if ( v33 )
  {
    if ( sub_487F00(v31, v33) )
      *(_DWORD *)(v32 + 0x608) = v33;
  }
  return 1;
}

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
zz100179 + 2 + 1 我看着像

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小可爱~ 发表于 2019-10-11 14:54
看到只有一个 return 1, 其他都是return 0 而且return 0 不止一个, 我就放心了, 百分之90是算法
我想搞破坏 发表于 2019-10-11 15:45
唯一笑解千愁 发表于 2019-10-11 16:13
 楼主| 冥界3大法王 发表于 2019-10-12 08:22
一脸懵逼的进来,一脸懵逼的出去

三滨的给
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表