str 00427AA6 |. 8D55 F0 lea edx, dword ptr [ebp-10] 00427AA9 |. 8BC3 mov eax, ebx 00427AAB |. E8 44E9FDFF call 004063F4 00427AB0 |. 8B45 F0 mov eax, dword ptr [ebp-10] 00427AB3 |. E8 F8BCFDFF call 004037B0 00427AB8 |. 8BF0 mov esi, eax ; //esi做循环指针,由上面循环体得到str 长度决定esi值 00427ABA |. 85F6 test esi, esi 00427ABC |. 7E 38 jle short 00427AF6 00427ABE |> 8BC3 /mov eax, ebx ; //该 循环产生最终的序列号 00427AC0 |. B9 0A000000 |mov ecx, 0A ;//ecx赋值为 0xa 00427AC5 |. 99 |cdq ;// 扩展 00427AC6 |. F7F9 |idiv ecx ;eax:edx/ecx 00427AC8 |. 6215 3C7B4200 |bound edx, qword ptr [427B3C] ;edx 越界检查 00427ACE |. 8A92 84884200 |mov dl, byte ptr [edx+428884] ;//dl 值为序列号字符,而[428884]处的值是固定的,0x4C, 0x41, 0x4E, 0x4E, 0x59, 0x35, 0x36, 0x34, 0x36, 0x35, 0x32, 0x31,其由 edx 的值决定偏移,[edx+428884]决定 dl 的值,并最终得到一序列值。 00427AD4 |. 8D45 F0 |lea eax, dword ptr [ebp-10] 00427AD7 |. E8 FCBBFDFF |call 004036D8 00427ADC |. 8B55 F0 |mov edx, dword ptr [ebp-10] 00427ADF |. 8D45 F4 |lea eax, dword ptr [ebp-C] 00427AE2 |. E8 D1BCFDFF |call 004037B8 ; // 将得到的序列号压栈同时edx 清零 00427AE7 |. 8BC3 |mov eax, ebx 00427AE9 |. B9 0A000000 |mov ecx, 0A 00427AEE |. 99 |cdq 00427AEF |. F7F9 |idiv ecx 00427AF1 |. 8BD8 |mov ebx, eax 00427AF3 |. 4E |dec esi ;//循环体控制 esi-- 00427AF4 |.^ 75 C8 \jnz short 00427ABE 00427AF6 |> 8B45 F4 mov eax, dword ptr [ebp-C] 00427AF9 |. 8B55 F8 mov edx, dword ptr [ebp-8] 00427AFC |. E8 BFBDFDFF call 004038C0 ;//关键 call2 00427B01 75 07 jnz short 00427B0A ;//为 0 |