00401140 /[ DISCUZ_CODE_5 ]nbsp; 81EC C8000000 sub esp, 0C8
00401146 |. 57 push edi
00401147 |. B9 09000000 mov ecx, 9
0040114C |. 33C0 xor eax, eax
0040114E |. 8D7C24 2D lea edi, dword ptr [esp+2D]
00401152 |. C64424 2C 30 mov byte ptr [esp+2C], 30
00401157 |. 68 70804000 push 00408070 ; 请输入你的用户名啊:\n
0040115C |. F3:AB rep stos dword ptr es:[edi]
0040115E |. 66:AB stos word ptr es:[edi]
00401160 |. AA stos byte ptr es:[edi]
00401161 |. E8 01010000 call 00401267 ; puts
00401166 |. 8D4424 58 lea eax, dword ptr [esp+58] ; 存放用户名的地址
0040116A |. 50 push eax
0040116B |. 68 6C804000 push 0040806C ; %s
00401170 |. E8 DB000000 call 00401250 ; scanf
00401175 |. 68 54804000 push 00408054 ; 请输入你的注册码啊:\n
0040117A |. E8 E8000000 call 00401267 ; puts
0040117F |. 8D4C24 14 lea ecx, dword ptr [esp+14] ; 存放注册码的地址
00401183 |. 51 push ecx
00401184 |. 68 6C804000 push 0040806C ; %s
00401189 |. E8 C2000000 call 00401250 ; scanf
0040118E |. 8D9424 940000>lea edx, dword ptr [esp+94]
00401195 |. 8D4424 6C lea eax, dword ptr [esp+6C] ; 取用户名
00401199 |. 52 push edx
0040119A |. 50 push eax
0040119B |. E8 60FEFFFF call 00401000 ; 计算用户名长度并将用户名加密,加密其实就是把ascii换位
004011A0 |. 8D8C24 C40000>lea ecx, dword ptr [esp+C4]
004011A7 |. 8D9424 9C0000>lea edx, dword ptr [esp+9C] ; 加密后的用户名
004011AE |. 51 push ecx
004011AF |. 8D4424 78 lea eax, dword ptr [esp+78] ; 加密前的用户名
004011B3 |. 52 push edx
004011B4 |. 50 push eax
004011B5 |. E8 96FEFFFF call 00401050 ; 进行第二次加密
004011BA |. 8D4C24 58 lea ecx, dword ptr [esp+58]
004011BE |. 8D9424 D00000>lea edx, dword ptr [esp+D0] ; 第二次加密后的数据
004011C5 |. 51 push ecx
004011C6 |. 8D8424 AC0000>lea eax, dword ptr [esp+AC] ; 第一次加密后的数据
004011CD |. 52 push edx
004011CE |. 8D8C24 880000>lea ecx, dword ptr [esp+88] ; 原用户名
004011D5 |. 50 push eax
004011D6 |. 51 push ecx
004011D7 |. E8 A4FEFFFF call 00401080 ; 再一次进行处理
004011DC |. 8D7C24 40 lea edi, dword ptr [esp+40] ; 读取注册码
004011E0 |. 83C9 FF or ecx, FFFFFFFF
004011E3 |. 33C0 xor eax, eax
004011E5 |. 83C4 3C add esp, 3C
004011E8 |. F2:AE repne scas byte ptr es:[edi] ; 读取注册码到一个数组
004011EA |. F7D1 not ecx ; 其实就是计算注册码长度
004011EC |. 49 dec ecx
004011ED |. 5F pop edi
004011EE |. 85C9
test
ecx, ecx
004011F0 |. 7E 0F jle short 00401201
004011F2 |> 8A5404 00
/mov
dl, byte ptr [esp+eax] ; 依次读取注册码
004011F6 |. FEC2 |inc dl
004011F8 |. 885404 00 |mov byte ptr [esp+eax], dl ; 注册码ascii加 1
004011FC |. 40 |inc eax
004011FD |. 3BC1 |
cmp
eax, ecx
004011FF |.^ 7C F1 \jl short 004011F2
00401201 |> 8D5424 00 lea edx, dword ptr [esp]
00401205 |. 8D4424 28 lea eax, dword ptr [esp+28]
00401209 |. 52 push edx
0040120A |. 50 push eax
0040120B |. E8 F0FEFFFF call 00401100
00401210 |. 83C4 08 add esp, 8
00401213 |. 83F8 01
cmp
eax, 1
00401216 |. 75 19 jnz short 00401231
00401218 |. 68 40804000 push 00408040 ; 你输入的是真码:
0040121D |. E8 45000000 call 00401267
00401222 |. 83C4 04 add esp, 4
00401225 |. E8 7C580000 call 00406AA6
0040122A |. 81C4 C8000000 add esp, 0C8
00401230 |. C3 retn
00401231 |> 68 30804000 push 00408030 ; 你要努力啊~:
00401236 |. E8 2C000000 call 00401267
0040123B |. 83C4 04 add esp, 4
0040123E |. E8 63580000 call 00406AA6
00401243 |. 81C4 C8000000 add esp, 0C8
00401249 \. C3 retn