[Asm] 纯文本查看 复制代码
00404813 |. 59 pop ecx ; 0012EBA8
00404814 |. 8945 A4 mov [local.23],eax
00404817 |. 8B45 A4 mov eax,[local.23]
0040481A |. 83F8 0A cmp eax,0xA ; 检验注册码是不是大于10位
0040481D |. 74 75 je short GEditor.00404894 ; 上面如果注册码小于十位,则跳,否则不跳,失败
0040481F |. 6A 00 push 0x0
00404821 |. 8D45 9A lea eax,dword ptr ss:[ebp-0x66]
00404824 |. E8 83020000 call GEditor.00404AAC
00404829 |. B2 02 mov dl,0x2
0040482B |. E8 B0020000 call GEditor.00404AE0
00404830 |. 66:8B08 mov cx,word ptr ds:[eax]
00404833 |. 51 push ecx
00404834 |. 66:C745 C8 2C>mov word ptr ss:[ebp-0x38],0x2C
0040483A |. BA 3C814F00 mov edx,GEditor.004F813C ; 注册失败:注册码号码不对,请核对后输入!
0040483F |. 8D45 F4 lea eax,[local.3]
00404842 |. E8 45070F00 call GEditor.004F4F8C
00404847 |. FF45 D4 inc [local.11]
0040484A |. 8B00 mov eax,dword ptr ds:[eax]
0040484C |. B2 01 mov dl,0x1
0040484E |. 59 pop ecx ; 0012EBA8
0040484F |. E8 A4650B00 call GEditor.004BADF8
00404854 |. FF4D D4 dec [local.11]
00404857 |. 8D45 F4 lea eax,[local.3]
0040485A |. BA 02000000 mov edx,0x2
0040485F |. E8 F4080F00 call GEditor.004F5158
00404864 |. 8B4D B4 mov ecx,[local.19]
00404867 |. 8B81 10030000 mov eax,dword ptr ds:[ecx+0x310]
0040486D |. 8B10 mov edx,dword ptr ds:[eax]
0040486F |. FF92 C0000000 call dword ptr ds:[edx+0xC0]
00404875 |. FF4D D4 dec [local.11]
00404878 |. 8D45 FC lea eax,[local.1]
0040487B |. BA 02000000 mov edx,0x2
00404880 |. E8 D3080F00 call GEditor.004F5158
00404885 |. 8B4D B8 mov ecx,[local.18]
00404888 |. 64:890D 00000>mov dword ptr fs:[0],ecx
0040488F |. E9 02020000 jmp GEditor.00404A96
00404894 |> 33C0 xor eax,eax ; eax清零
00404896 |. 8945 AC mov [local.21],eax ; local 21清零
00404899 |. 33D2 xor edx,edx ; edx清零
0040489B |. 8955 A8 mov [local.22],edx ; local 22 清零
0040489E |> 8B4D A8 /mov ecx,[local.22] ; LOCAL 22给ecx
004048A1 |. 0FBE440D 84 |movsx eax,byte ptr ss:[ebp+ecx-0x7C] ; 取当前循环次数位的ASCII注册码的十六进制值(至于为啥,请参考上一帖)
004048A6 |. 8B55 AC |mov edx,[local.21] ; 第一次相减结果(local 21)给edx 首次为0
004048A9 |. 03C2 |add eax,edx ; 当前循环次数位的ASCII注册码的十六进制值+第一次相减结果
004048AB |. 83C0 D0 |add eax,-0x30 ; 相加后的eax-30(小于30则溢出)
004048AE |. 8945 AC |mov [local.21],eax ; 相减后的值给local 21 即第一次相减结果
004048B1 |. 8B4D A8 |mov ecx,[local.22] ; local 22(循环次数)给ecx
004048B4 |. 0FBE440D 84 |movsx eax,byte ptr ss:[ebp+ecx-0x7C] ; 再次取当前循环次数位的ASCII注册码的十六进制值
004048B9 |. 8B55 9C |mov edx,[local.25] ; 第二次相减结果给edx
004048BC |. 03C2 |add eax,edx ; 当前循环次数位的ASCII注册码的十六进制值+第二次相减结果
004048BE |. 83C0 D0 |add eax,-0x30 ; 相加的值-30
004048C1 |. 8945 9C |mov [local.25],eax ; 将相减结果给LOCAL 25 即第二次相减结果
004048C4 |. FF45 A8 |inc [local.22] ; LOCAL 22 +1 即循环次数
004048C7 |. 8B4D A8 |mov ecx,[local.22] ; 循环次数给ecx
004048CA |. 83F9 09 |cmp ecx,0x9 ; 当前循环次数与9比较
004048CD |.^ 7C CF \jl short GEditor.0040489E ; 上面的比较小于9 则跳回继续运算,否则不跳
004048CF |. 8B45 9C mov eax,[local.25] ; 第二次相减结果给eax
004048D2 |. B9 0A000000 mov ecx,0xA ; A给ecx
004048D7 |. 99 cdq ; 符号位扩展 (注释1) 相减结果不会大于80000000 所以EDX 00000000
004048D8 |. F7F9 idiv ecx ; 除以A EAX放商 EDX放余数 上面因为小于80000000 所以被除数就是第二次相减结果
004048DA |. 83C2 30 add edx,0x30 ; 余数+30,并放回edx
004048DD |. 8955 9C mov [local.25],edx ; 相加结果给local 25
004048E0 |. 8B45 AC mov eax,[local.21] ; 第一次相加结果给eax
004048E3 |. 3D A0000000 cmp eax,0xA0 ; 第一次相加结果与A0比较
004048E8 |. 75 0B jnz short GEditor.004048F5 ; 上面不想等则跳失败,相等则不跳
004048EA |. 0FBE55 8D movsx edx,byte ptr ss:[ebp-0x73] ; 取注册码最后一位 给edx
004048EE |. 8B4D 9C mov ecx,[local.25] ; 余数+30结果给ecx
004048F1 |. 3BD1 cmp edx,ecx ; 最后一位注册码与余数+30比较
004048F3 |. 74 62 je short GEditor.00404957 ; 最后一位注册码小于余数+30,则跳,反之则不跳
004048F5 |> FF75 AC push [local.21]
004048F8 |. 68 63814F00 push GEditor.004F8163 ; 注册失败:注册码号码错误,请核对后输入!%d
004048FD |. 8D45 FC lea eax,[local.1]
00404900 |. 50 push eax
00404901 |. E8 A2090F00 call GEditor.004F52A8
00404906 |. 83C4 0C add esp,0xC
00404909 |. 6A 00 push 0x0
0040490B |. 8D45 98 lea eax,[local.26]
0040490E |. E8 99010000 call GEditor.00404AAC
00404913 |. B2 02 mov dl,0x2
00404915 |. E8 C6010000 call GEditor.00404AE0
0040491A |. 66:8B08 mov cx,word ptr ds:[eax]
0040491D |. B2 01 mov dl,0x1
0040491F |. 8B45 FC mov eax,[local.1]
00404922 |. E8 D1640B00 call GEditor.004BADF8
00404927 |. 8B4D B4 mov ecx,[local.19]
0040492A |. 8B81 10030000 mov eax,dword ptr ds:[ecx+0x310]
00404930 |. 8B10 mov edx,dword ptr ds:[eax]
00404932 |. FF92 C0000000 call dword ptr ds:[edx+0xC0]
00404938 |. FF4D D4 dec [local.11]
0040493B |. 8D45 FC lea eax,[local.1]
0040493E |. BA 02000000 mov edx,0x2
00404943 |. E8 10080F00 call GEditor.004F5158
00404948 |. 8B4D B8 mov ecx,[local.18]
0040494B |. 64:890D 00000>mov dword ptr fs:[0],ecx
00404952 |. E9 3F010000 jmp GEditor.00404A96
00404957 |> 66:C745 C8 38>mov word ptr ss:[ebp-0x38],0x38 ; 跳到这里说明注册码对了
0040495D |. BA 01000080 mov edx,0x80000001
00404962 |. 8B45 A0 mov eax,[local.24]
00404965 |. E8 1A060F00 call GEditor.004F4F84
0040496A |. 66:C745 C8 44>mov word ptr ss:[ebp-0x38],0x44
00404970 |. BA 8C814F00 mov edx,GEditor.004F818C ; \Software\wujian\GEditor3.0