[Asm] 纯文本查看 复制代码
00401602 E8 49520400 call 00446850 ; 得到输入转换为16进制
00401607 83EC 04 sub esp, 4 ; 这一段是除法优化过的指令
0040160A 8B4D BC mov ecx, dword ptr [ebp-44]
0040160D BA 83DE1B43 mov edx, 431BDE83
00401612 89C8 mov eax, ecx
00401614 F7EA imul edx
00401616 C1FA 12 sar edx, 12
00401619 89C8 mov eax, ecx
0040161B C1F8 1F sar eax, 1F
0040161E 29C2 sub edx, eax
00401620 89D0 mov eax, edx
00401622 8945 D0 mov dword ptr [ebp-30], eax
00401625 817D D0 9F00000>cmp dword ptr [ebp-30], 9F ; serial /1000000 和 159 比较得到前三位
0040162C 75 4C jnz short 0040167A ; 失败则跳转
0040162E 8B45 BC mov eax, dword ptr [ebp-44] ; 这一段是除法优化过的指令
00401631 2D C0257A09 sub eax, 97A25C0
00401636 8945 CC mov dword ptr [ebp-34], eax
00401639 8B4D CC mov ecx, dword ptr [ebp-34]
0040163C BA D34D6210 mov edx, 10624DD3
00401641 89C8 mov eax, ecx
00401643 F7EA imul edx
00401645 C1FA 06 sar edx, 6
00401648 89C8 mov eax, ecx
0040164A C1F8 1F sar eax, 1F
0040164D 29C2 sub edx, eax
0040164F 89D0 mov eax, edx
00401651 8945 C8 mov dword ptr [ebp-38], eax
00401654 817D C8 6501000>cmp dword ptr [ebp-38], 165 ; (serial - 159000000 )/1000 和 357 比较得到后三位
0040165B 75 14 jnz short 00401671 ; 失败则跳转
0040165D C745 E4 DE00000>mov dword ptr [ebp-1C], 0DE ; 成功条件赋值1
00401664 8B45 CC mov eax, dword ptr [ebp-34]
00401667 2D 88720500 sub eax, 57288 ; 减去 357000 得到最右边三位
0040166C 8945 D8 mov dword ptr [ebp-28], eax
0040166F EB 10 jmp short 00401681
00401671 C745 E4 B0502C0>mov dword ptr [ebp-1C], 12C50B0
00401678 EB 07 jmp short 00401681
0040167A C745 E4 7803000>mov dword ptr [ebp-1C], 378 ; 这一段是除法优化过的指令
00401681 8B4D D8 mov ecx, dword ptr [ebp-28]
00401684 BA 1F85EB51 mov edx, 51EB851F
00401689 89C8 mov eax, ecx
0040168B F7EA imul edx
0040168D C1FA 05 sar edx, 5
00401690 89C8 mov eax, ecx
00401692 C1F8 1F sar eax, 1F
00401695 29C2 sub edx, eax
00401697 89D0 mov eax, edx
00401699 8945 C4 mov dword ptr [ebp-3C], eax
0040169C 837D C4 04 cmp dword ptr [ebp-3C], 4 ; 判断百位是否为4
004016A0 75 09 jnz short 004016AB ; 失败则跳转
004016A2 C745 E0 2535130>mov dword ptr [ebp-20], 133525 ; 成功条件赋值2
004016A9 EB 07 jmp short 004016B2
004016AB C745 E0 46F2090>mov dword ptr [ebp-20], 9F246
004016B2 8B45 D8 mov eax, dword ptr [ebp-28]
004016B5 2D 90010000 sub eax, 190 ; 减去 400 得到 最后两位
004016BA 8945 C0 mov dword ptr [ebp-40], eax
004016BD 837D C0 38 cmp dword ptr [ebp-40], 38 ; 判断最后两位是否为56
004016C1 75 09 jnz short 004016CC ; 失败则跳转
004016C3 C745 DC 9041020>mov dword ptr [ebp-24], 24190 ; 成功条件赋值3
004016CA EB 07 jmp short 004016D3
004016CC C745 DC 3885020>mov dword ptr [ebp-24], 28538
004016D3 817D E4 DE00000>cmp dword ptr [ebp-1C], 0DE
004016DA 75 72 jnz short 0040174E ; 失败则跳转
004016DC 817D E0 2535130>cmp dword ptr [ebp-20], 133525
004016E3 75 69 jnz short 0040174E ; 失败则跳转
004016E5 817D DC 9041020>cmp dword ptr [ebp-24], 24190
004016EC 75 60 jnz short 0040174E ; 失败则跳转
004016EE C70424 F0FA4600 mov dword ptr [esp], 0046FAF0
004016F5 C745 88 0100000>mov dword ptr [ebp-78], 1
004016FC B9 60DF4700 mov ecx, 0047DF60
00401701 E8 0A7A0400 call 00449110
00401706 83EC 04 sub esp, 4
00401709 C74424 04 3CF04>mov dword ptr [esp+4], 0047F03C ; ASCII ">>>>>>>>>> Ok,you win! <<<<<<<<<<"