飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9450|回复: 28

[PYG原创] anti crackme 有点难度 学问很深的 参看pediy 一篇文章很详细

[复制链接]

该用户从未签到

发表于 2008-3-31 23:49:55 | 显示全部楼层 |阅读模式
anti  crackme  有点难度 学问很深的 参看pediy 一篇文章很详细、
http://bbs.pediy.com/showthread.php?threadid=10361
CrackMe采用了SetUnhandledExceptionFilter异常,定时器,内置父进程检查,SMC防爆自校验.
bp ExitProcess这个断点无效
00401558  |.  E8 F3000000   CALL <JMP.&KERNEL32.SetUnhandledExceptio>; \SetUnhandledExceptionFilter
0040155D  |.  A3 68304000   MOV DWORD PTR DS:[403068],EAX  走过跳到系统领空nop      ?
00401562  |.  33C0          XOR EAX,EAX
00401564      C700 01000000 MOV DWORD PTR DS:[EAX],1

004015C8  |.  6A 00         PUSH 0                                   ; |hOwner = NULL
004015CA  |.  6A 01         PUSH 1                                   ; |pTemplate = 1
004015CC  |.  FF35 70304000 PUSH DWORD PTR DS:[403070]               ; |hInst = 00400000
004015D2  |.  E8 07000000   CALL <JMP.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
走过退出调试   ?
77D3B10C >  8BFF            MOV EDI,EDI                              ; ntdll.7C930738
77D3B10E    55              PUSH EBP
77D3B10F    8BEC            MOV EBP,ESP
77D3B111    53              PUSH EBX
77D3B112    56              PUSH ESI
77D3B113    8B75 08         MOV ESI,DWORD PTR SS:[EBP+8]
77D3B116    6A 00           PUSH 0
77D3B118    FF75 0C         PUSH DWORD PTR SS:[EBP+C]

alt+m 下断401000
00401356  /.  55            PUSH EBP
00401357  |.  8BEC          MOV EBP,ESP
00401359  |.  53            PUSH EBX
0040135A  |.  57            PUSH EDI
0040135B  |.  56            PUSH ESI
0040135C  |.  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]

0040137E  |> \3D 10010000   CMP EAX,110
00401383  |.  75 7B         JNZ SHORT XiaoZi'C.00401400
00401385  |.  E8 94FCFFFF   CALL XiaoZi'C.0040101E              ?
0040138A  |.  68 00100000   PUSH 1000                                ; /RsrcName = 4096.
0040138F  |.  FF35 70304000 PUSH DWORD PTR DS:[403070]               ; |hInst = 00400000
00401395  |.  E8 56020000   CALL <JMP.&USER32.LoadIconA>             ; \LoadIconA
0040139A  |.  50            PUSH EAX                                 ; /lParam
0040139B  |.  6A 01         PUSH 1                                   ; |wParam = 1

0040101E  /$  55            PUSH EBP
0040101F  |.  8BEC          MOV EBP,ESP
00401021  |.  81C4 D4FEFFFF ADD ESP,-12C
00401027  |.  68 28010000   PUSH 128                                 ; /Length = 128 (296.)
0040102C  |.  8D85 D8FEFFFF LEA EAX,DWORD PTR SS:[EBP-128]           ; |
00401032  |.  50            PUSH EAX                                 ; |Destination
00401033  |.  E8 12060000   CALL <JMP.&KERNEL32.RtlZeroMemory>       ; \RtlZeroMemory
00401038  |.  C785 D8FEFFFF>MOV DWORD PTR SS:[EBP-128],128

00401063  |. /EB 1F         JMP SHORT XiaoZi'C.00401084
00401065  |> |E8 B0050000   /CALL <JMP.&KERNEL32.GetCurrentProcessId>; [GetCurrentProcessId
0040106A  |. |3B85 E0FEFFFF |CMP EAX,DWORD PTR SS:[EBP-120]
00401070  |. |74 26         |JE SHORT XiaoZi'C.00401098             ?
00401072  |. |8D85 D8FEFFFF |LEA EAX,DWORD PTR SS:[EBP-128]
00401078  |. |50            |PUSH EAX                                ; /pProcessentry

00401108  |.  68 7C364000   PUSH XiaoZi'C.0040367C                   ; |String1 = "C:\WINDOWS\Explorer.EXE"
0040110D  |.  E8 50050000   CALL <JMP.&KERNEL32.lstrcmpA>            ; \lstrcmpA
00401112  |.  85C0          TEST EAX,EAX
00401114  |.  74 68         JE SHORT XiaoZi'C.0040117E           ?关键
00401116  |.  EB 12         JMP SHORT XiaoZi'C.0040112A
00401118  |.  5C 53 79 73 7>ASCII "\System32\cmd.ex"

调用堆栈:    主线程, 条目 8
地址=0012FB88
堆栈=77D505CF
函数过程 / 参数=? USER32.MessageBoxExA
调用来自=USER32.77D505CA
结构=0012FB84
004011EF   > \A1 56304000   mov     eax, [403056]关键算法
004011F4   .  83F8 06       cmp     eax, 6
004011F7   .  0F8C 97000000 jl      00401294
004011FD   .  50            push    eax
004011FE   .  59            pop     ecx
004011FF   .  8D35 00304000 lea     esi, [403000]
00401205   .  8D3D 74304000 lea     edi, [403074]
0040120B   >  33C0          xor     eax, eax
0040120D   .  33DB          xor     ebx, ebx
0040120F   .  8B07          mov     eax, [edi]
00401211   .  8B1E          mov     ebx, [esi]
00401213   .  25 FF000000   and     eax, 0FF
00401218   .  81E3 FF000000 and     ebx, 0FF
0040121E   .  33C3          xor     eax, ebx
00401220   .  0305 4E304000 add     eax, [40304E]
00401226   .  A3 4E304000   mov     [40304E], eax
0040122B   .  46            inc     esi
0040122C   .  47            inc     edi
0040122D   .^ E2 DC         loopd   short 0040120B
0040122F   .  33C9          xor     ecx, ecx
00401231   .  8B0D 5A304000 mov     ecx, [40305A]
00401237   .  8D35 25304000 lea     esi, [403025]
0040123D   .  8D3D F4304000 lea     edi, [4030F4]
00401243   >  33C0          xor     eax, eax
00401245   .  33DB          xor     ebx, ebx
00401247   .  8B07          mov     eax, [edi]
00401249   .  8B1E          mov     ebx, [esi]
0040124B   .  25 FF000000   and     eax, 0FF
00401250   .  81E3 FF000000 and     ebx, 0FF
00401256   .  33C3          xor     eax, ebx
00401258   .  0305 52304000 add     eax, [403052]
0040125E   .  A3 52304000   mov     [403052], eax
00401263   .  46            inc     esi
00401264   .  47            inc     edi
00401265   .^ E2 DC         loopd   short 00401243
00401267   .  A1 52304000   mov     eax, [403052]
0040126C   .  8B1D 4A304000 mov     ebx, [40304A]


00401274   . /75 3A         jnz     short 004012B0           ?关键跳
00401276   . |8505 4E304000 test    [40304E], eax
0040127C   . |75 32         jnz     short 004012B0              ?关键跳
0040127E   . |6A 00         push    0
00401280   . |68 98114000   push    00401198                         ;  ASCII "Yeah"
00401285   . |68 C4114000   push    004011C4
0040128A   . |6A 00         push    0
0040128C   . |A1 84384000   mov     eax, [403884]
00401291   . |FFD0          call    eax
00401293   . |C3            retn
00401294   > |68 9A124000   push    0040129A
00401299   . |C3            retn
0040129A   . |6A 00         push    0
0040129C   . |68 9F114000   push    0040119F                         ;  ASCII "Error"
004012A1   . |68 E2114000   push    004011E2
004012A6   . |6A 00         push    0
004012A8   . |A1 84384000   mov     eax, [403884]
004012AD   . |FFD0          call    eax
004012AF   . |C3            retn
004012B0   > \6A 00         push    0

004012A6   .  6A 00         push    0
004012A8   .  A1 84384000   mov     eax, [403884]
004012AD   .  FFD0          call    eax                              ;  USER32.MessageBoxA
用户名太短

命令行分别

hw 00401274

hw 0040127C

00401301  /$  B8 74124000   MOV EAX,55.00401274
00401306  |.  A3 90384000   MOV DWORD PTR DS:[403890],EAX
0040130B  |.  8B18          MOV EBX,DWORD PTR DS:[EAX]
0040130D  |.  66:81FB 753A  CMP BX,3A75                ?
00401312  |.  74 41         JE SHORT 55.00401355
00401314  |.  68 94384000   PUSH 55.00403894                         ; /pOldProtect = 55.00403894
00401319  |.  6A 40         PUSH 40                                  ; |NewProtect = PAGE_EXECUTE_READWRITE
0040131B  |.  6A 10         PUSH 10                                  ; |Size = 10 (16.)
0040131D  |.  FF35 90384000 PUSH DWORD PTR DS:[403890]               ; |Address = 55.00401274
00401323  |.  E8 2E030000   CALL <JMP.&KERNEL32.VirtualProtect>      ; \VirtualProtect
00401328  |.  A1 90384000   MOV EAX,DWORD PTR DS:[403890]
0040132D  |.  BB 753A0000   MOV EBX,3A75                  
00401332  |.  66:8918       MOV WORD PTR DS:[EAX],BX
00401335  |.  B8 7C124000   MOV EAX,55.0040127C
0040133A  |.  A3 90384000   MOV DWORD PTR DS:[403890],EAX
0040133F  |.  8B18          MOV EBX,DWORD PTR DS:[EAX]
00401341  |.  66:81FB 7532  CMP BX,3275                  ?   
00401346  |.  74 0D         JE SHORT 55.00401355
00401348  |.  A1 90384000   MOV EAX,DWORD PTR DS:[403890]
0040134D  |.  BB 75320000   MOV EBX,3275
00401352  |.  66:8918       MOV WORD PTR DS:[EAX],BX
00401355  \>  C3            RETN

bp ExitProcess
0012FFB8   00000000
0012FFBC   004015DE  /CALL 到 ExitProcess 来自 66.004015D9
0012FFC0   00000000  \ExitCode = 0
0012FFC4   7C816FD7  返回到 kernel32.7C816FD7
0012FFC8   7C930738  ntdll.7C930738
bp SetTimer
0012FD40   004013BB  /CALL 到 SetTimer 来自 66.004013B6
0012FD44   003B04DC  |hWnd = 003B04DC ('CrackeMe',class='#32770')
0012FD48   00000006  |TimerID = 6
0012FD4C   000003E8  |Timeout = 1000. ms
0012FD50   00000000  \Timerproc = NULL
0012FD54   00401356  66.00401356


004013D7   .  83F8 FF       CMP EAX,-1
004013DA      0F84 1C010000 JE 66.004014FC           时间效验关键跳
004013E0   .  6A 00         PUSH 0                                   ; /Timerproc = NULL
004013E2   .  68 10270000   PUSH 2710                                ; |Timeout = 10000. ms
004013E7   .  6A 05         PUSH 5                                   ; |TimerID = 5
004013E9   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
004013EC   .  E8 0B020000   CALL <JMP.&USER32.SetTimer>              ; \SetTimer时间效验
004013F1   .  C705 4A304000>MOV DWORD PTR DS:[40304A],1
004013FB   .  E9 FC000000   JMP 66.004014FC
00401400   >  3D 13010000   CMP EAX,113
00401405   .  75 33         JNZ SHORT 66.0040143A
00401407   .  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]
0040140A   .  83F8 05       CMP EAX,5
0040140D   .  75 13         JNZ SHORT 66.00401422
0040140F   .  6A 00         PUSH 0                                   ; /lParam = 0
00401411   .  6A 00         PUSH 0                                   ; |wParam = 0
00401413   .  6A 10         PUSH 10                                  ; |Message = WM_CLOSE
00401415   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hWnd



      hread 将文件中的数据读入内存缓冲区  
       hwrite 将数据从内存缓冲区写入一个文件
SMC技术修改代码必然有内存写入事件,这里内存写入断点无效,用Hw吧。
00401564   |.  C700 01000000     mov dword ptr ds:[eax],1  //SetUnhandledExceptio反跟踪

修改为

00401564       90                nop
00401565       90                nop
00401566       90                nop
00401567       90                nop
00401568       90                nop
00401569       90                nop

00401114   |.  74 68             je short XiaoZi'C.0040117E  //父进程校验。

修改为

00401114      /EB 68             jmp short XiaoZi'C.0040117E

004011F7      /0F8C 97000000     jl XiaoZi'C.00401294

修改为

004011F7       90                nop
004011F8       90                nop
004011F9       90                nop
004011FA       90                nop
004011FB       90                nop
004011FC       90                nop

00401274    . /75 3A             jnz short XiaoZi'C.004012B0

修改为

00401274       90                nop
00401275       90                nop

0040127C      /75 32             jnz short XiaoZi'C.004012B0

修改为

0040127C       90                nop
0040127D       90                nop


0040130D       66:81FB 753A      cmp bx,3A75

自己和自己比,当然永远校验通过。

0040130D       66:3BDB           cmp bx,bx
00401310       90                nop
00401311       90                nop

00401341       66:81FB 7532      cmp bx,3275






自己和自己比,当然永远校验通过。

00401341       66:3BDB           cmp bx,bx
00401344       90                nop
00401345       90                nop
自动退出了  ok 这个挺有意思的 呵呵~!
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1威望 +40 收起 理由
yingfeng + 40 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-2-22 19:39
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2008-3-31 23:54:58 | 显示全部楼层
    有录像么
    看看
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-5-7 10:39
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-4-1 22:38:46 | 显示全部楼层
    看看/:001
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 15:35
  • 签到天数: 1637 天

    [LV.Master]伴坛终老

    发表于 2008-4-13 17:36:31 | 显示全部楼层
    看看录像,学习是硬道理。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2015-8-6 10:23
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-4-15 16:17:32 | 显示全部楼层
    有录像好 啊,看看,谢谢楼主
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-2 16:48
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-4-16 06:39:18 | 显示全部楼层
    这个一定得看.谢谢
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-6 09:28
  • 签到天数: 121 天

    [LV.7]常住居民III

    发表于 2008-4-16 07:00:46 | 显示全部楼层
    看看,学习参考一下.
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2018-8-23 00:04
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-4-18 18:24:44 | 显示全部楼层
    看看是什么东西啊学习一下
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-10-16 20:38
  • 签到天数: 1491 天

    [LV.10]以坛为家III

    发表于 2008-4-24 20:47:18 | 显示全部楼层
    好文章,支持一下,收藏一份。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-25 14:23:17 | 显示全部楼层
    /:023 看起来很不错,顶一贴
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表