新CrackMe160之092 - FaNtOm - crackme6

汇编的程序直接看代码

00401000 >/$  6A 00         push 0x0                                 ; /pModule = NULL
00401002  |.  E8 BF010000   call <jmp.&KERNEL32.GetModuleHandleA>    ; \GetModuleHandleA
00401007  |.  A3 84304000   mov dword ptr ds:[0x403084],eax
0040100C  |.  6A 00         push 0x0                                 ; /lParam = NULL
0040100E  |.  68 2C104000   push CRACKME6.0040102C                   ; |DlgProc = CRACKME6.0040102C
00401013  |.  6A 00         push 0x0                                 ; |hOwner = NULL
00401015  |.  68 00304000   push CRACKME6.00403000                   ; |pTemplate = "MAINDIALOG"
0040101A  |.  FF35 84304000 push dword ptr ds:[0x403084]             ; |hInst = NULL
00401020  |.  E8 7D010000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401025  |.  6A 00         push 0x0                                 ; /ExitCode = 0x0
00401027  \.  E8 94010000   call <jmp.&KERNEL32.ExitProcess>         ; \ExitProcess
0040102C  /.  55            push ebp
0040102D  |.  8BEC          mov ebp,esp
0040102F  |.  817D 0C 10010>cmp [arg.2],0x110
00401036  |.  74 15         je short CRACKME6.0040104D
00401038  |.  837D 0C 10    cmp [arg.2],0x10
0040103C  |.  74 11         je short CRACKME6.0040104F
0040103E  |.  817D 0C 11010>cmp [arg.2],0x111
00401045  |.  74 14         je short CRACKME6.0040105B
00401047  |.  33C0          xor eax,eax
00401049  |.  C9            leave
0040104A  |.  C2 1000       retn 0x10
0040104D  |>  EB 46         jmp short CRACKME6.00401095
0040104F  |>  6A 00         push 0x0                                 ; /Result = 0x0
00401051  |.  FF75 08       push [arg.1]                             ; |hWnd = 002E3000
00401054  |.  E8 4F010000   call <jmp.&USER32.EndDialog>             ; \EndDialog
00401059  |.  EB 3A         jmp short CRACKME6.00401095
0040105B  |>  8B45 10       mov eax,[arg.3]
0040105E  |.  66:3D 419C    cmp ax,0x9C41
00401062  |.^ 74 EB         je short CRACKME6.0040104F
00401064  |.  66:3D 439C    cmp ax,0x9C43
00401068  |.  74 08         je short CRACKME6.00401072
0040106A  |.  66:3D 429C    cmp ax,0x9C42
0040106E  |.  74 09         je short CRACKME6.00401079
00401070  |.  EB 23         jmp short CRACKME6.00401095
00401072  |>  E8 6A000000   call CRACKME6.004010E1
00401077  |.  EB 1C         jmp short CRACKME6.00401095
00401079  |>  6A 00         push 0x0                                 ; /lParam = NULL
0040107B  |.  68 9E104000   push CRACKME6.0040109E                   ; |DlgProc = CRACKME6.0040109E
00401080  |.  FF75 08       push [arg.1]                             ; |hOwner = 002E3000
00401083  |.  68 0B304000   push CRACKME6.0040300B                   ; |pTemplate = "ABOUTDIALOG"
00401088  |.  FF35 84304000 push dword ptr ds:[0x403084]             ; |hInst = NULL
0040108E  |.  E8 0F010000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401093  |.  EB 00         jmp short CRACKME6.00401095
00401095  |>  B8 01000000   mov eax,0x1
0040109A  |.  C9            leave
0040109B  \.  C2 1000       retn 0x10
0040109E  /.  55            push ebp
0040109F  |.  8BEC          mov ebp,esp
004010A1  |.  817D 0C 10010>cmp [arg.2],0x110
004010A8  |.  74 15         je short CRACKME6.004010BF
004010AA  |.  837D 0C 10    cmp [arg.2],0x10
004010AE  |.  74 11         je short CRACKME6.004010C1
004010B0  |.  817D 0C 11010>cmp [arg.2],0x111
004010B7  |.  74 14         je short CRACKME6.004010CD
004010B9  |.  33C0          xor eax,eax
004010BB  |.  C9            leave
004010BC  |.  C2 1000       retn 0x10
004010BF  |>  EB 17         jmp short CRACKME6.004010D8
004010C1  |>  6A 00         push 0x0                                 ; /Result = 0x0
004010C3  |.  FF75 08       push [arg.1]                             ; |hWnd = 002E3000
004010C6  |.  E8 DD000000   call <jmp.&USER32.EndDialog>             ; \EndDialog
004010CB  |.  EB 0B         jmp short CRACKME6.004010D8
004010CD  |>  8B45 10       mov eax,[arg.3]
004010D0  |.  66:3D EC03    cmp ax,0x3EC
004010D4  |.  75 02         jnz short CRACKME6.004010D8
004010D6  |.^ EB E9         jmp short CRACKME6.004010C1
004010D8  |>  B8 01000000   mov eax,0x1
004010DD  |.  C9            leave
004010DE  \.  C2 1000       retn 0x10
004010E1  /$  6A 00         push 0x0                                 ; /hTemplateFile = NULL
004010E3  |.  68 80000000   push 0x80                                ; |Attributes = NORMAL
004010E8  |.  6A 03         push 0x3                                 ; |Mode = OPEN_EXISTING
004010EA  |.  6A 00         push 0x0                                 ; |pSecurity = NULL
004010EC  |.  6A 01         push 0x1                                 ; |ShareMode = FILE_SHARE_READ
004010EE  |.  68 00000080   push 0x80000000                          ; |Access = GENERIC_READ
004010F3  |.  68 17304000   push CRACKME6.00403017                   ; |FileName = "keyfile.dat"
004010F8  |.  E8 BD000000   call <jmp.&KERNEL32.CreateFileA>         ; \CreateFileA
004010FD  |.  A3 88304000   mov dword ptr ds:[0x403088],eax
00401102  |.  83F8 FF       cmp eax,-0x1
00401105  |.  75 14         jnz short CRACKME6.0040111B
00401107  |.  6A 10         push 0x10                                ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
00401109  |.  68 23304000   push CRACKME6.00403023                   ; |Title = "Error!"
0040110E  |.  68 2A304000   push CRACKME6.0040302A                   ; |Text = "Key file not found!"
00401113  |.  6A 00         push 0x0                                 ; |hOwner = NULL
00401115  |.  E8 94000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
0040111A  |.  C3            retn
0040111B  |>  6A 00         push 0x0                                 ; /pOverlapped = NULL
0040111D  |.  68 96304000   push CRACKME6.00403096                   ; |pBytesRead = CRACKME6.00403096
00401122  |.  6A 0A         push 0xA                                 ; |BytesToRead = A (10.)
00401124  |.  68 8C304000   push CRACKME6.0040308C                   ; |Buffer = CRACKME6.0040308C
00401129  |.  FF35 88304000 push dword ptr ds:[0x403088]             ; |hFile = NULL
0040112F  |.  E8 98000000   call <jmp.&KERNEL32.ReadFile>            ; \ReadFile
00401134  |.  83F8 00       cmp eax,0x0
00401137  |.  75 15         jnz short CRACKME6.0040114E
00401139  |.  6A 10         push 0x10                                ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
0040113B  |.  68 23304000   push CRACKME6.00403023                   ; |Title = "Error!"
00401140  |.  68 3E304000   push CRACKME6.0040303E                   ; |Text = "Error reading file!"
00401145  |.  6A 00         push 0x0                                 ; |hOwner = NULL
00401147  |.  E8 62000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
0040114C  |.  EB 48         jmp short CRACKME6.00401196
0040114E  |>  8D15 8C304000 lea edx,dword ptr ds:[0x40308C]
00401154  |.  83C2 05       add edx,0x5
00401157  |.  803A 31       cmp byte ptr ds:[edx],0x31
0040115A  |.  75 10         jnz short CRACKME6.0040116C
0040115C  |.  83C2 03       add edx,0x3
0040115F  |.  803A 33       cmp byte ptr ds:[edx],0x33
00401162  |.  75 08         jnz short CRACKME6.0040116C
00401164  |.  42            inc edx                                  ;  CRACKME6.<ModuleEntryPoint>
00401165  |.  803A 30       cmp byte ptr ds:[edx],0x30
00401168  |.  74 02         je short CRACKME6.0040116C
0040116A  |.  EB 15         jmp short CRACKME6.00401181
0040116C  |>  6A 10         push 0x10                                ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
0040116E  |.  68 23304000   push CRACKME6.00403023                   ; |Title = "Error!"
00401173  |.  68 52304000   push CRACKME6.00403052                   ; |Text = "Invalid key!"
00401178  |.  6A 00         push 0x0                                 ; |hOwner = NULL
0040117A  |.  E8 2F000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
0040117F  |.  EB 15         jmp short CRACKME6.00401196
00401181  |>  6A 40         push 0x40                                ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401183  |.  68 76304000   push CRACKME6.00403076                   ; |Title = "Correct!!!"
00401188  |.  68 5F304000   push CRACKME6.0040305F                   ; |Text = "Correct key! Good job!"
0040118D  |.  6A 00         push 0x0                                 ; |hOwner = NULL
0040118F  |.  E8 1A000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
00401194  |.  EB 00         jmp short CRACKME6.00401196
00401196  |>  FF35 88304000 push dword ptr ds:[0x403088]             ; /hObject = NULL
0040119C  |.  E8 13000000   call <jmp.&KERNEL32.CloseHandle>         ; \CloseHandle
004011A1  \.  C3            retn
004011A2   $- FF25 20204000 jmp dword ptr ds:[<&USER32.DialogBoxPara>;  user32.DialogBoxParamA
004011A8   $- FF25 18204000 jmp dword ptr ds:[<&USER32.EndDialog>]   ;  user32.EndDialog
004011AE   $- FF25 1C204000 jmp dword ptr ds:[<&USER32.MessageBoxA>] ;  user32.MessageBoxA
004011B4   $- FF25 0C204000 jmp dword ptr ds:[<&KERNEL32.CloseHandle>;  kernel32.CloseHandle
004011BA   $- FF25 00204000 jmp dword ptr ds:[<&KERNEL32.CreateFileA>;  kernel32.CreateFileA
004011C0   .- FF25 10204000 jmp dword ptr ds:[<&KERNEL32.ExitProcess>;  kernel32.ExitProcess
004011C6   $- FF25 08204000 jmp dword ptr ds:[<&KERNEL32.GetModuleHa>;  kernel32.GetModuleHandleA
004011CC   $- FF25 04204000 jmp dword ptr ds:[<&KERNEL32.ReadFile>]  ;  kernel32.ReadFile
004011D2      00            db 00

关键算法:

00401154  |.  83C2 05       add edx,0x5
00401157  |.  803A 31       cmp byte ptr ds:[edx],0x31
0040115A  |.  75 10         jnz short CRACKME6.0040116C
0040115C  |.  83C2 03       add edx,0x3
0040115F  |.  803A 33       cmp byte ptr ds:[edx],0x33
00401162  |.  75 08         jnz short CRACKME6.0040116C
00401164  |.  42            inc edx                                  ;  CRACKME6.<ModuleEntryPoint>
00401165  |.  803A 30       cmp byte ptr ds:[edx],0x30

文件内容第6位为‘1’,第9位为‘3’,第10位不为‘0’,其它不限,如:“aaaaa1aa34aaaaa”

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

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

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

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