新CrackMe160之136 - nago

汇编的程序,直接OD查看源码

00401000 >/$  6A 00         push 0x0                                 ; /pModule = NULL
00401002  |.  E8 36050000   call <jmp.&KERNEL32.GetModuleHandleA>    ; \GetModuleHandleA
00401007  |.  A3 74204000   mov dword ptr ds:[0x402074],eax
0040100C  |.  6A 00         push 0x0                                 ; /Title = NULL
0040100E  |.  68 8F204000   push nagoya.0040208F                     ; |Class = "ASMCLASS32"
00401013  |.  E8 C5040000   call <jmp.&USER32.FindWindowA>           ; \FindWindowA
00401018  |.  0BC0          or eax,eax
0040101A  |.  74 05         je short nagoya.00401021
0040101C  |.  90            nop
0040101D  |.  90            nop
0040101E  |.  90            nop
0040101F  |.  90            nop
00401020  |.  C3            retn
00401021  |>  C705 4C204000>mov dword ptr ds:[0x40204C],0x4003
0040102B  |.  C705 50204000>mov dword ptr ds:[0x402050],nagoya.WndPr>
00401035  |.  C705 54204000>mov dword ptr ds:[0x402054],0x0
0040103F  |.  C705 58204000>mov dword ptr ds:[0x402058],0x0
00401049  |.  A1 74204000   mov eax,dword ptr ds:[0x402074]
0040104E  |.  A3 5C204000   mov dword ptr ds:[0x40205C],eax
00401053  |.  68 007F0000   push 0x7F00                              ; /RsrcName = IDI_APPLICATION
00401058  |.  6A 00         push 0x0                                 ; |hInst = NULL
0040105A  |.  E8 A2040000   call <jmp.&USER32.LoadIconA>             ; \LoadIconA
0040105F  |.  A3 60204000   mov dword ptr ds:[0x402060],eax
00401064  |.  68 007F0000   push 0x7F00                              ; /RsrcName = IDC_ARROW
00401069  |.  6A 00         push 0x0                                 ; |hInst = NULL
0040106B  |.  E8 8B040000   call <jmp.&USER32.LoadCursorA>           ; \LoadCursorA
00401070  |.  A3 64204000   mov dword ptr ds:[0x402064],eax
00401075  |.  C705 68204000>mov dword ptr ds:[0x402068],0x6
0040107F  |.  C705 6C204000>mov dword ptr ds:[0x40206C],nagoya.00402>;  ASCII "MENU"
00401089  |.  C705 70204000>mov dword ptr ds:[0x402070],nagoya.00402>;  ASCII "ASMCLASS32"
00401093  |.  68 4C204000   push nagoya.0040204C                     ; /pWndClass = nagoya.0040204C
00401098  |.  E8 7C040000   call <jmp.&USER32.RegisterClassA>        ; \RegisterClassA
0040109D  |.  6A 00         push 0x0                                 ; /lParam = NULL
0040109F  |.  FF35 74204000 push dword ptr ds:[0x402074]             ; |hInst = NULL
004010A5  |.  6A 00         push 0x0                                 ; |hMenu = NULL
004010A7  |.  6A 00         push 0x0                                 ; |hParent = NULL
004010A9  |.  68 00800000   push 0x8000                              ; |Height = 8000 (32768.)
004010AE  |.  68 00800000   push 0x8000                              ; |Width = 8000 (32768.)
004010B3  |.  6A 6E         push 0x6E                                ; |Y = 6E (110.)
004010B5  |.  68 B4000000   push 0xB4                                ; |X = B4 (180.)
004010BA  |.  68 0000CF00   push 0xCF0000                            ; |Style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION
004010BF  |.  68 84204000   push nagoya.00402084                     ; |WindowName = "Exercise 2"
004010C4  |.  68 8F204000   push nagoya.0040208F                     ; |Class = "ASMCLASS32"
004010C9  |.  6A 00         push 0x0                                 ; |ExtStyle = 0
004010CB  |.  E8 E9030000   call <jmp.&USER32.CreateWindowExA>       ; \CreateWindowExA
004010D0  |.  A3 00204000   mov dword ptr ds:[0x402000],eax
004010D5  |.  6A 01         push 0x1                                 ; /ShowState = SW_SHOWNORMAL
004010D7  |.  FF35 00204000 push dword ptr ds:[0x402000]             ; |hWnd = NULL
004010DD  |.  E8 A7030000   call <jmp.&USER32.ShowWindow>            ; \ShowWindow
004010E2  |.  FF35 00204000 push dword ptr ds:[0x402000]             ; /hWnd = NULL
004010E8  |.  E8 A2030000   call <jmp.&USER32.UpdateWindow>          ; \UpdateWindow
004010ED  |>  6A 00         /push 0x0                                ; /MsgFilterMax = 0x0
004010EF  |.  6A 00         |push 0x0                                ; |MsgFilterMin = 0x0
004010F1  |.  6A 00         |push 0x0                                ; |hWnd = NULL
004010F3  |.  68 34204000   |push nagoya.00402034                    ; |pMsg = nagoya.00402034
004010F8  |.  E8 F2030000   |call <jmp.&USER32.GetMessageA>          ; \GetMessageA
004010FD  |.  66:3D 0000    |cmp ax,0x0
00401101  |.  74 1A         |je short nagoya.0040111D
00401103  |.  90            |nop
00401104  |.  90            |nop
00401105  |.  90            |nop
00401106  |.  90            |nop
00401107  |.  68 34204000   |push nagoya.00402034                    ; /pMsg = WM_NULL
0040110C  |.  E8 84030000   |call <jmp.&USER32.TranslateMessage>     ; \TranslateMessage
00401111  |.  68 34204000   |push nagoya.00402034                    ; /pMsg = WM_NULL
00401116  |.  E8 B0030000   |call <jmp.&USER32.DispatchMessageA>     ; \DispatchMessageA
0040111B  |.^ EB D0         \jmp short nagoya.004010ED
0040111D  |>  FF35 3C204000 push dword ptr ds:[0x40203C]             ; /ExitCode = 0x0
00401123  \.  E8 0F040000   call <jmp.&KERNEL32.ExitProcess>         ; \ExitProcess
00401128 >/$  C8 000000     enter 0x0,0x0
0040112C  |.  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
0040112D  |.  57            push edi                                 ;  nagoya.<ModuleEntryPoint>
0040112E  |.  53            push ebx
0040112F  |.  837D 0C 02    cmp [arg.2],0x2
00401133  |.  74 68         je short nagoya.0040119D
00401135  |.  90            nop
00401136  |.  90            nop
00401137  |.  90            nop
00401138  |.  90            nop
00401139  |.  837D 0C 01    cmp [arg.2],0x1
0040113D  |.  74 20         je short nagoya.0040115F
0040113F  |.  90            nop
00401140  |.  90            nop
00401141  |.  90            nop
00401142  |.  90            nop
00401143  |.  837D 0C 24    cmp [arg.2],0x24
00401147  |.  74 65         je short nagoya.004011AE
00401149  |.  90            nop
0040114A  |.  90            nop
0040114B  |.  90            nop
0040114C  |.  90            nop
0040114D  |.  817D 0C 11010>cmp [arg.2],0x111
00401154  |.  0F84 7D000000 je nagoya.004011D7
0040115A  |.  EB 2B         jmp short nagoya.00401187
0040115C  |   90            nop
0040115D  |   90            nop
0040115E  |   90            nop
0040115F  |>  6A 00         push 0x0                                 ; /lParam = NULL
00401161  |.  68 5E134000   push nagoya.0040135E                     ; |DlgProc = nagoya.0040135E
00401166  |.  FF75 08       push [arg.1]                             ; |hOwner = 00271000
00401169  |.  68 B3204000   push nagoya.004020B3                     ; |pTemplate = "NagScreen"
0040116E  |.  FF35 74204000 push dword ptr ds:[0x402074]             ; |hInst = NULL
00401174  |.  E8 4C030000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401179  |.  83F8 02       cmp eax,0x2
0040117C  |.  74 1F         je short nagoya.0040119D
0040117E  |.  90            nop
0040117F  |.  90            nop
00401180  |.  90            nop
00401181  |.  90            nop
00401182  |.  EB 72         jmp short nagoya.004011F6
00401184  |   90            nop
00401185  |   90            nop
00401186  |   90            nop
00401187  |>  FF75 14       push [arg.4]                             ; /lParam = 0x0
0040118A  |.  FF75 10       push [arg.3]                             ; |wParam = 0x0
0040118D  |.  FF75 0C       push [arg.2]                             ; |Message = MSG(0x3A144462)
00401190  |.  FF75 08       push [arg.1]                             ; |hWnd = 00271000
00401193  |.  E8 27030000   call <jmp.&USER32.DefWindowProcA>        ; \DefWindowProcA
00401198  |.  EB 5C         jmp short nagoya.004011F6
0040119A  |   90            nop
0040119B  |   90            nop
0040119C  |   90            nop
0040119D  |>  6A 00         push 0x0                                 ; /ExitCode = 0x0
0040119F  |.  E8 6F030000   call <jmp.&USER32.PostQuitMessage>       ; \PostQuitMessage
004011A4  |.  B8 00000000   mov eax,0x0
004011A9  |.  EB 4B         jmp short nagoya.004011F6
004011AB  |   90            nop
004011AC  |   90            nop
004011AD  |   90            nop
004011AE  |>  8B5D 14       mov ebx,[arg.4]
004011B1  |.  C743 18 04010>mov dword ptr ds:[ebx+0x18],0x104
004011B8  |.  C743 1C 04010>mov dword ptr ds:[ebx+0x1C],0x104
004011BF  |.  C743 20 04010>mov dword ptr ds:[ebx+0x20],0x104
004011C6  |.  C743 24 04010>mov dword ptr ds:[ebx+0x24],0x104
004011CD  |.  B8 00000000   mov eax,0x0
004011D2  |.  EB 22         jmp short nagoya.004011F6
004011D4  |   90            nop
004011D5  |   90            nop
004011D6  |   90            nop
004011D7  |>  837D 10 67    cmp [arg.3],0x67
004011DB  |.  74 20         je short nagoya.004011FD
004011DD  |.  90            nop
004011DE  |.  90            nop
004011DF  |.  90            nop
004011E0  |.  90            nop
004011E1  |.  837D 10 65    cmp [arg.3],0x65
004011E5  |.^ 74 B6         je short nagoya.0040119D
004011E7  |.  837D 10 66    cmp [arg.3],0x66
004011EB  |.  74 2C         je short nagoya.00401219
004011ED  |.  90            nop
004011EE  |.  90            nop
004011EF  |.  90            nop
004011F0  |.  90            nop
004011F1  |.  EB 03         jmp short nagoya.004011F6
004011F3  |   90            nop
004011F4  |   90            nop
004011F5  |   90            nop
004011F6  |>  5B            pop ebx                                  ;  kernel32.7741FCC9
004011F7  |.  5F            pop edi                                  ;  kernel32.7741FCC9
004011F8  |.  5E            pop esi                                  ;  kernel32.7741FCC9
004011F9  |.  C9            leave
004011FA  |.  C2 1000       retn 0x10
004011FD  |>  6A 00         push 0x0                                 ; /lParam = NULL
004011FF  |.  68 0F134000   push nagoya.0040130F                     ; |DlgProc = nagoya.0040130F
00401204  |.  FF75 08       push [arg.1]                             ; |hOwner = 00271000
00401207  |.  68 A9204000   push nagoya.004020A9                     ; |pTemplate = "DLG_ABOUT"
0040120C  |.  FF35 74204000 push dword ptr ds:[0x402074]             ; |hInst = NULL
00401212  |.  E8 AE020000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401217  |.^ EB DD         jmp short nagoya.004011F6
00401219  |>  6A 00         push 0x0                                 ; /lParam = NULL
0040121B  |.  68 68124000   push nagoya.00401268                     ; |DlgProc = nagoya.00401268
00401220  |.  FF75 08       push [arg.1]                             ; |hOwner = 00271000
00401223  |.  68 9F204000   push nagoya.0040209F                     ; |pTemplate = "DLG_REGIS"
00401228  |.  FF35 74204000 push dword ptr ds:[0x402074]             ; |hInst = NULL
0040122E  |.  E8 92020000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401233  |.  83F8 00       cmp eax,0x0
00401236  |.^ 74 BE         je short nagoya.004011F6
00401238  |.  68 05214000   push nagoya.00402105                     ;  ASCII "????????????????????????????????"
0040123D  |.  68 25214000   push nagoya.00402125
00401242  |.  E8 C9010000   call nagoya.00401410
00401247  |.  83C4 08       add esp,0x8
0040124A  |.  A1 25214000   mov eax,dword ptr ds:[0x402125]
0040124F  |.  3D 39300000   cmp eax,0x3039
00401254  |.  74 0B         je short nagoya.00401261
00401256  |.  90            nop
00401257  |.  90            nop
00401258  |.  90            nop
00401259  |.  90            nop
0040125A  |.  E8 08020000   call nagoya.00401467
0040125F  |.^ EB 95         jmp short nagoya.004011F6
00401261  |>  E8 E5010000   call nagoya.0040144B
00401266  \.^ EB 8E         jmp short nagoya.004011F6
00401268  /.  C8 000000     enter 0x0,0x0
0040126C  |.  53            push ebx
0040126D  |.  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
0040126E  |.  57            push edi                                 ;  nagoya.<ModuleEntryPoint>
0040126F  |.  817D 0C 10010>cmp [arg.2],0x110
00401276  |.  74 27         je short nagoya.0040129F
00401278  |.  90            nop
00401279  |.  90            nop
0040127A  |.  90            nop
0040127B  |.  90            nop
0040127C  |.  817D 0C 11010>cmp [arg.2],0x111
00401283  |.  74 24         je short nagoya.004012A9
00401285  |.  90            nop
00401286  |.  90            nop
00401287  |.  90            nop
00401288  |.  90            nop
00401289  |.  837D 0C 10    cmp [arg.2],0x10
0040128D  |.  74 70         je short nagoya.004012FF
0040128F  |.  90            nop
00401290  |.  90            nop
00401291  |.  90            nop
00401292  |.  90            nop
00401293  |.  B8 00000000   mov eax,0x0
00401298  |>  5F            pop edi                                  ;  kernel32.7741FCC9
00401299  |.  5E            pop esi                                  ;  kernel32.7741FCC9
0040129A  |.  5B            pop ebx                                  ;  kernel32.7741FCC9
0040129B  |.  C9            leave
0040129C  |.  C2 1000       retn 0x10
0040129F  |>  FF75 08       push [arg.1]                             ; /hWnd = 00271000
004012A2  |.  E8 78020000   call <jmp.&USER32.SetFocus>              ; \SetFocus
004012A7  |.^ EB EF         jmp short nagoya.00401298
004012A9  |>  33C0          xor eax,eax
004012AB  |.  817D 10 EB030>cmp [arg.3],0x3EB
004012B2  |.  74 4B         je short nagoya.004012FF
004012B4  |.  90            nop
004012B5  |.  90            nop
004012B6  |.  90            nop
004012B7  |.  90            nop
004012B8  |.  817D 10 EA030>cmp [arg.3],0x3EA
004012BF  |.  75 37         jnz short nagoya.004012F8
004012C1  |.  90            nop
004012C2  |.  90            nop
004012C3  |.  90            nop
004012C4  |.  90            nop
004012C5  |.  6A 0B         push 0xB                                 ; /Count = B (11.)
004012C7  |.  68 05214000   push nagoya.00402105                     ; |Buffer = nagoya.00402105
004012CC  |.  A1 80204000   mov eax,dword ptr ds:[0x402080]          ; |
004012D1  |.  50            push eax                                 ; |ControlID = 19FFCC (1703884.)
004012D2  |.  FF75 08       push [arg.1]                             ; |hWnd = 00271000
004012D5  |.  E8 0F020000   call <jmp.&USER32.GetDlgItemTextA>       ; \GetDlgItemTextA
004012DA  |.  6A 0B         push 0xB                                 ; /Count = B (11.)
004012DC  |.  68 15214000   push nagoya.00402115                     ; |Buffer = nagoya.00402115
004012E1  |.  68 E8030000   push 0x3E8                               ; |ControlID = 3E8 (1000.)
004012E6  |.  FF75 08       push [arg.1]                             ; |hWnd = 00271000
004012E9  |.  E8 FB010000   call <jmp.&USER32.GetDlgItemTextA>       ; \GetDlgItemTextA
004012EE  |.  B8 01000000   mov eax,0x1
004012F3  |.  EB 0A         jmp short nagoya.004012FF
004012F5  |   90            nop
004012F6  |   90            nop
004012F7  |   90            nop
004012F8  |>  B8 00000000   mov eax,0x0
004012FD  |.^ EB 99         jmp short nagoya.00401298
004012FF  |>  50            push eax                                 ; /Result = 19FFCC (1703884.)
00401300  |.  FF75 08       push [arg.1]                             ; |hWnd = 00271000
00401303  |.  E8 C9010000   call <jmp.&USER32.EndDialog>             ; \EndDialog
00401308  |.  B8 01000000   mov eax,0x1
0040130D  \.^ EB 89         jmp short nagoya.00401298
0040130F  /.  C8 000000     enter 0x0,0x0
00401313  |.  53            push ebx
00401314  |.  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
00401315  |.  57            push edi                                 ;  nagoya.<ModuleEntryPoint>
00401316  |.  817D 0C 11010>cmp [arg.2],0x111
0040131D  |.  74 1A         je short nagoya.00401339
0040131F  |.  90            nop
00401320  |.  90            nop
00401321  |.  90            nop
00401322  |.  90            nop
00401323  |.  837D 0C 10    cmp [arg.2],0x10
00401327  |.  74 1D         je short nagoya.00401346
00401329  |.  90            nop
0040132A  |.  90            nop
0040132B  |.  90            nop
0040132C  |.  90            nop
0040132D  |.  B8 00000000   mov eax,0x0
00401332  |>  5F            pop edi                                  ;  kernel32.7741FCC9
00401333  |.  5E            pop esi                                  ;  kernel32.7741FCC9
00401334  |.  5B            pop ebx                                  ;  kernel32.7741FCC9
00401335  |.  C9            leave
00401336  |.  C2 1000       retn 0x10
00401339  |>  817D 10 F2030>cmp [arg.3],0x3F2
00401340  |.  75 15         jnz short nagoya.00401357
00401342  |.  90            nop
00401343  |.  90            nop
00401344  |.  90            nop
00401345  |.  90            nop
00401346  |>  6A 00         push 0x0                                 ; /Result = 0x0
00401348  |.  FF75 08       push [arg.1]                             ; |hWnd = 00271000
0040134B  |.  E8 81010000   call <jmp.&USER32.EndDialog>             ; \EndDialog
00401350  |.  B8 01000000   mov eax,0x1
00401355  |.^ EB DB         jmp short nagoya.00401332
00401357  |>  B8 00000000   mov eax,0x0
0040135C  \.^ EB D4         jmp short nagoya.00401332
0040135E   .  C8 000000     enter 0x0,0x0
00401362   .  53            push ebx
00401363   .  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
00401364   .  57            push edi                                 ;  nagoya.<ModuleEntryPoint>
00401365   .  817D 0C 11010>cmp dword ptr ss:[ebp+0xC],0x111
0040136C   .  74 2C         je short nagoya.0040139A
0040136E   .  90            nop
0040136F   .  90            nop
00401370   .  90            nop
00401371   .  90            nop
00401372   .  817D 0C 10010>cmp dword ptr ss:[ebp+0xC],0x110
00401379   .  74 4F         je short nagoya.004013CA
0040137B   .  90            nop
0040137C   .  90            nop
0040137D   .  90            nop
0040137E   .  90            nop
0040137F   .  837D 0C 10    cmp dword ptr ss:[ebp+0xC],0x10
00401383   .  B8 02000000   mov eax,0x2
00401388   .  74 4E         je short nagoya.004013D8
0040138A   .  90            nop
0040138B   .  90            nop
0040138C   .  90            nop
0040138D   .  90            nop
0040138E   .  B8 00000000   mov eax,0x0
00401393   >  5F            pop edi                                  ;  kernel32.7741FCC9
00401394   .  5E            pop esi                                  ;  kernel32.7741FCC9
00401395   .  5B            pop ebx                                  ;  kernel32.7741FCC9
00401396   .  C9            leave
00401397   .  C2 1000       retn 0x10
0040139A   >  B8 02000000   mov eax,0x2
0040139F   .  817D 10 FD030>cmp dword ptr ss:[ebp+0x10],0x3FD
004013A6   .  74 30         je short nagoya.004013D8
004013A8   .  90            nop
004013A9   .  90            nop
004013AA   .  90            nop
004013AB   .  90            nop
004013AC   .  817D 10 FC030>cmp dword ptr ss:[ebp+0x10],0x3FC
004013B3   .  75 0E         jnz short nagoya.004013C3
004013B5   .  90            nop
004013B6   .  90            nop
004013B7   .  90            nop
004013B8   .  90            nop
004013B9   .  B8 01000000   mov eax,0x1
004013BE   .  EB 18         jmp short nagoya.004013D8
004013C0      90            nop
004013C1      90            nop
004013C2      90            nop
004013C3   >  B8 00000000   mov eax,0x0
004013C8   .^ EB C9         jmp short nagoya.00401393
004013CA   >  BE 80204000   mov esi,nagoya.00402080
004013CF   .  FF06          inc dword ptr ds:[esi]
004013D1   .  B8 01000000   mov eax,0x1
004013D6   .^ EB BB         jmp short nagoya.00401393
004013D8   >  50            push eax                                 ; /Result = 19FFCC (1703884.)
004013D9   .  FF75 08       push dword ptr ss:[ebp+0x8]              ; |hWnd = 00271000
004013DC   .  E8 F0000000   call <jmp.&USER32.EndDialog>             ; \EndDialog
004013E1   .  B8 01000000   mov eax,0x1
004013E6   .^ EB AB         jmp short nagoya.00401393
004013E8  /$  55            push ebp
004013E9  |.  8BEC          mov ebp,esp
004013EB  |.  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
004013EC  |.  8B75 08       mov esi,[arg.1]
004013EF  |.  8BFE          mov edi,esi                              ;  nagoya.<ModuleEntryPoint>
004013F1  |.  33C0          xor eax,eax
004013F3  |>  8A06          /mov al,byte ptr ds:[esi]
004013F5  |.  46            |inc esi                                 ;  nagoya.<ModuleEntryPoint>
004013F6  |.  84C0          |test al,al
004013F8  |.  75 09         |jnz short nagoya.00401403
004013FA  |.  90            |nop
004013FB  |.  90            |nop
004013FC  |.  90            |nop
004013FD  |.  90            |nop
004013FE  |.  8807          |mov byte ptr ds:[edi],al
00401400  |.  5E            |pop esi                                 ;  kernel32.7741FCC9
00401401  |.  5D            |pop ebp                                 ;  kernel32.7741FCC9
00401402  |.  C3            |retn
00401403  |>  3C 39         |cmp al,0x39
00401405  |.^ 7F EC         |jg short nagoya.004013F3
00401407  |.  2C 30         |sub al,0x30
00401409  |.^ 72 E8         |jb short nagoya.004013F3
0040140B  |.  8807          |mov byte ptr ds:[edi],al
0040140D  |.  47            |inc edi                                 ;  nagoya.<ModuleEntryPoint>
0040140E  \.^ EB E3         \jmp short nagoya.004013F3
00401410  /$  55            push ebp
00401411  |.  8BEC          mov ebp,esp
00401413  |.  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
00401414  |.  8B75 0C       mov esi,[arg.2]
00401417  |.  56            push esi                                 ;  nagoya.<ModuleEntryPoint>
00401418  |.  E8 CBFFFFFF   call nagoya.004013E8
0040141D  |.  83C4 04       add esp,0x4
00401420  |.  56            push esi                                 ; /String = "j"
00401421  |.  E8 0B010000   call <jmp.&KERNEL32.lstrlen>             ; \lstrlenA
00401426  |.  85C0          test eax,eax
00401428  |.  74 19         je short nagoya.00401443
0040142A  |.  90            nop
0040142B  |.  90            nop
0040142C  |.  90            nop
0040142D  |.  90            nop
0040142E  |.  8BC8          mov ecx,eax
00401430  |.  33C0          xor eax,eax
00401432  |.  33DB          xor ebx,ebx
00401434  |>  D1E0          /shl eax,1
00401436  |.  8BD8          |mov ebx,eax
00401438  |.  D1E0          |shl eax,1
0040143A  |.  D1E0          |shl eax,1
0040143C  |.  021E          |add bl,byte ptr ds:[esi]
0040143E  |.  03C3          |add eax,ebx
00401440  |.  46            |inc esi                                 ;  nagoya.<ModuleEntryPoint>
00401441  |.^ E2 F1         \loopd short nagoya.00401434
00401443  |>  8B75 08       mov esi,[arg.1]
00401446  |.  8906          mov dword ptr ds:[esi],eax
00401448  |.  5E            pop esi                                  ;  kernel32.7741FCC9
00401449  |.  5D            pop ebp                                  ;  kernel32.7741FCC9
0040144A  \.  C3            retn
0040144B  /$  6A 00         push 0x0                                 ; /BeepType = MB_OK
0040144D  |.  E8 B5000000   call <jmp.&USER32.MessageBeep>           ; \MessageBeep
00401452  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00401454  |.  68 BD204000   push nagoya.004020BD                     ; |Title = "Congratulations!!!"
00401459  |.  68 D6204000   push nagoya.004020D6                     ; |Text = "You have cracked this

scheme. "
0040145E  |.  FF75 08       push [arg.1]                             ; |hOwner = 00271000
00401461  |.  E8 A7000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
00401466  \.  C3            retn
00401467  /$  6A 00         push 0x0                                 ; /BeepType = MB_OK
00401469  |.  E8 99000000   call <jmp.&USER32.MessageBeep>           ; \MessageBeep
0040146E  |.  6A 10         push 0x10                                ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
00401470  |.  68 D0204000   push nagoya.004020D0                     ; |Title = "Sorry"
00401475  |.  68 F6204000   push nagoya.004020F6                     ; |Text = "Try it again!!"
0040147A  |.  FF75 08       push [arg.1]                             ; |hOwner = 00271000
0040147D  |.  E8 8B000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
00401482  \.  C3            retn
00401483   .- FF25 E4304000 jmp dword ptr ds:[<&USER32.TrackPopupMen>;  user32.TrackPopupMenu
00401489   $- FF25 E8304000 jmp dword ptr ds:[<&USER32.ShowWindow>]  ;  user32.ShowWindow
0040148F   $- FF25 EC304000 jmp dword ptr ds:[<&USER32.UpdateWindow>>;  user32.UpdateWindow
00401495   $- FF25 F0304000 jmp dword ptr ds:[<&USER32.TranslateMess>;  user32.TranslateMessage
0040149B   .- FF25 F4304000 jmp dword ptr ds:[<&USER32.AppendMenuA>] ;  user32.AppendMenuA
004014A1   .- FF25 F8304000 jmp dword ptr ds:[<&USER32.BeginPaint>]  ;  user32.BeginPaint
004014A7   .- FF25 FC304000 jmp dword ptr ds:[<&USER32.ClientToScree>;  user32.ClientToScreen
004014AD   .- FF25 00314000 jmp dword ptr ds:[<&USER32.CreateDialogP>;  user32.CreateDialogParamA
004014B3   .- FF25 04314000 jmp dword ptr ds:[<&USER32.CreatePopupMe>;  user32.CreatePopupMenu
004014B9   $- FF25 08314000 jmp dword ptr ds:[<&USER32.CreateWindowE>;  user32.CreateWindowExA
004014BF   $- FF25 0C314000 jmp dword ptr ds:[<&USER32.DefWindowProc>;  ntdll.NtdllDefWindowProc_A
004014C5   $- FF25 10314000 jmp dword ptr ds:[<&USER32.DialogBoxPara>;  user32.DialogBoxParamA
004014CB   $- FF25 14314000 jmp dword ptr ds:[<&USER32.DispatchMessa>;  user32.DispatchMessageA
004014D1   $- FF25 18314000 jmp dword ptr ds:[<&USER32.EndDialog>]   ;  user32.EndDialog
004014D7   .- FF25 1C314000 jmp dword ptr ds:[<&USER32.EndPaint>]    ;  user32.EndPaint
004014DD   $- FF25 20314000 jmp dword ptr ds:[<&USER32.FindWindowA>] ;  user32.FindWindowA
004014E3   .- FF25 24314000 jmp dword ptr ds:[<&USER32.GetCursorPos>>;  user32.GetPhysicalCursorPos
004014E9   $- FF25 28314000 jmp dword ptr ds:[<&USER32.GetDlgItemTex>;  user32.GetDlgItemTextA
004014EF   $- FF25 2C314000 jmp dword ptr ds:[<&USER32.GetMessageA>] ;  user32.GetMessageA
004014F5   .- FF25 30314000 jmp dword ptr ds:[<&USER32.InvalidateRec>;  user32.InvalidateRect
004014FB   $- FF25 34314000 jmp dword ptr ds:[<&USER32.LoadCursorA>] ;  user32.LoadCursorA
00401501   $- FF25 38314000 jmp dword ptr ds:[<&USER32.LoadIconA>]   ;  user32.LoadIconA
00401507   $- FF25 3C314000 jmp dword ptr ds:[<&USER32.MessageBeep>] ;  user32.MessageBeep
0040150D   $- FF25 40314000 jmp dword ptr ds:[<&USER32.MessageBoxA>] ;  user32.MessageBoxA
00401513   $- FF25 44314000 jmp dword ptr ds:[<&USER32.PostQuitMessa>;  user32.PostQuitMessage
00401519   $- FF25 48314000 jmp dword ptr ds:[<&USER32.RegisterClass>;  user32.RegisterClassA
0040151F   $- FF25 4C314000 jmp dword ptr ds:[<&USER32.SetFocus>]    ;  user32.SetFocus
00401525   .- FF25 50314000 jmp dword ptr ds:[<&USER32.SetMenu>]     ;  user32.SetMenu
0040152B   .- FF25 54314000 jmp dword ptr ds:[<&USER32.SetWindowPos>>;  user32.SetWindowPos
00401531   $- FF25 5C314000 jmp dword ptr ds:[<&KERNEL32.lstrlen>]   ;  kernel32.lstrlenA
00401537   .- FF25 60314000 jmp dword ptr ds:[<&KERNEL32.ExitProcess>;  kernel32.ExitProcess
0040153D   $- FF25 64314000 jmp dword ptr ds:[<&KERNEL32.GetModuleHa>;  kernel32.GetModuleHandleA
00401543   .- FF25 6C314000 jmp dword ptr ds:[<&GDI32.TextOutA>]     ;  gdi32.TextOutA
00401549   .- FF25 70314000 jmp dword ptr ds:[<&GDI32.GetStockObject>;  gdi32.GetStockObject
0040154F      00            db 00
  1. 去NAG
    搜索界面看到了弹框标题"NagScreen"定位到00401169,看到了DialogBoxParamA(00401174)将这行nop掉即可跳过弹框

  2. 继续去NAG
    进入主界面后发现还要继续点菜单的注册才能出来注册界面,能不能运行程序直接显示注册界面而不显示主界面呢? 肯定是可以的,现在我们把主界面也当成NAG界面给去掉
    点击菜单的注册按钮后,弹出注册界面,这里点OD的暂停,可以在堆栈界面中看到弹框的调用是在0040122E处,把上面push的参数全部搬到第一个NAG弹框中去,就是把第一个弹框换成注册框
    修改如下(比较多,认真对比),将:

00401133  |. /74 68         je short nagoya.0040119D                       ; 这块没用空间比较多,所以把空的整理出来给弹框事件用
00401135     |90            nop
00401136     |90            nop
00401137     |90            nop
00401138     |90            nop
00401139     |837D 0C 01    cmp dword ptr ss:[ebp+0xC],0x1
0040113D     |74 20         je short nagoya.0040115F
0040113F     |90            nop
00401140     |90            nop
00401141     |90            nop
00401142     |90            nop
00401143     |837D 0C 24    cmp dword ptr ss:[ebp+0xC],0x24
00401147     |74 65         je short nagoya.004011AE
00401149     |90            nop
0040114A     |90            nop
0040114B     |90            nop
0040114C     |90            nop
0040114D     |817D 0C 11010>cmp dword ptr ss:[ebp+0xC],0x111
00401154     |0F84 7D000000 je nagoya.004011D7
0040115A     |EB 2B         jmp short nagoya.00401187
0040115C     |90            nop
0040115D     |90            nop
0040115E     |90            nop
0040115F  |> |6A 00         push 0x0                                        ; /lParam = NULL
00401161  |. |68 68124000   push nagoya.00401268                            ; |DlgProc = nagoya.00401268
00401166  |. |FF75 08       push [arg.1]                                    ; |hOwner = 002D2000
00401169  |. |68 9F204000   push nagoya.0040209F                            ; |pTemplate = "DLG_REGIS"
0040116E  |. |FF35 74204000 push dword ptr ds:[0x402074]                    ; |hInst = NULL
00401174  |. |E8 4C030000   call <jmp.&USER32.DialogBoxParamA>              ; \DialogBoxParamA
00401179     |83F8 00       cmp eax,0x0
0040117C    ^|74 9F         je short nagoya.0040111D
0040117E     |E9 B5000000   jmp nagoya.00401238
00401183     |90            nop
00401184     |90            nop
00401185     |90            nop
00401186     |90            nop
修改为:
00401133   . /74 68         je short nagoya.0040119D
00401135   . |837D 0C 01    cmp dword ptr ss:[ebp+0xC],0x1
00401139   . |74 24         je short nagoya.0040115F
0040113B   . |837D 0C 24    cmp dword ptr ss:[ebp+0xC],0x24
0040113F   . |74 6D         je short nagoya.004011AE
00401141   . |817D 0C 11010>cmp dword ptr ss:[ebp+0xC],0x111
00401148   . |0F84 89000000 je nagoya.004011D7
0040114E   . |EB 37         jmp short nagoya.00401187
00401150     |90            nop
00401151   > |3D 68124000   cmp eax,nagoya.00401268                         ; 新增的事件判断,窗体关闭x事件,直接退出程序
00401156   .^|74 C5         je short nagoya.0040111D
00401158   . |83F8 00       cmp eax,0x0                                     ; not now按钮事件,也是退出程序
0040115B   .^|74 C0         je short nagoya.0040111D
0040115D   . |EB 1F         jmp short nagoya.0040117E                       ; 不够空间了,用近跳跳回原来位置
0040115F   > |6A 00         push 0x0                                        ; /lParam = NULL
00401161   . |68 68124000   push nagoya.00401268                            ; |DlgProc = nagoya.00401268
00401166   . |FF75 08       push dword ptr ss:[ebp+0x8]                     ; |hOwner = 00352000
00401169   . |68 9F204000   push nagoya.0040209F                            ; |pTemplate = "DLG_REGIS"
0040116E   . |FF35 74204000 push dword ptr ds:[0x402074]                    ; |hInst = NULL
00401174   . |E8 4C030000   call <jmp.&USER32.DialogBoxParamA>              ; \DialogBoxParamA
00401179   .^|EB D6         jmp short nagoya.00401151
0040117B     |90            nop
0040117C     |90            nop
0040117D     |90            nop
0040117E   > |E9 B5000000   jmp nagoya.00401238                             ; 远跳到原注册界面事件
00401183     |90            nop
00401184     |90            nop
00401185     |90            nop
00401186     |90            nop

继续将:

00401254     /74 0B         je short nagoya.00401261
00401256     |90            nop
00401257     |90            nop
00401258     |90            nop
00401259     |90            nop
0040125A     |E8 08020000   call nagoya.00401467
0040125F    ^|EB 95         jmp short nagoya.004011F6
00401261     \E8 E5010000   call nagoya.0040144B
00401266    ^ EB 8E         jmp short nagoya.004011F6
00401268      C8 000000     enter 0x0,0x0

修改为:

00401254   /74 07           je short nagoya.0040125D
00401256   |E8 0C020000     call nagoya.00401467                            ; 失败提示,下面远跳到退出程序空间不够,把这个call上移
0040125B  ^|EB 99           jmp short nagoya.004011F6                       ; 验证时不退出程序
0040125D   \E8 E9010000     call nagoya.0040144B                            ; 成功提示
00401262  ^ EB 92           jmp short nagoya.004011F6                       ; 验证时不退出程序
00401264    90              nop
00401265    90              nop
00401266    90              nop
00401267    90              nop
00401268      C8 000000     enter 0x0,0x0

继续将:

004012F3   /EB 0A           jmp short nagoya.004012FF
004012F5   |90              nop
004012F6   |90              nop
004012F7   |90              nop

修改为:

004012F3  ^\E9 81FEFFFF     jmp nagoya.00401179                             ; 跳过关闭界面,就是验证时不关闭界面,可以继续操作

到此, 这个程序变得很干净了,只有一个注册界面了, 完美~

  1. 正常破解
    OD重新载入第2次去NAG的程序,只有注册界面这个,方便调试,不用每次都点注册菜单
    由上一步分析可知注册事件入口在00401242处,下好断点,开始分析算法
    00401403处可知用户名得是数字
    00401434 ~ 00401441处可得 用户名转数字"123"=>123
    0040124F处与0x3039对比,即"12345"
    注册码无验证, 可不填

 
 
本节高手录制的视频,点击前往查看

 
 
 
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-12-30 14:34  hankerstudio  阅读(16)  评论(0)    收藏  举报