好友
阅读权限40
听众
最后登录1970-1-1
|
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;
} |
免费评分
-
查看全部评分
|