首页
社区
课程
招聘
[原创]适合新手的D4ph1_-_Crackme#3的破解
发表于: 2006-8-8 17:18 5069

[原创]适合新手的D4ph1_-_Crackme#3的破解

jdxyw 活跃值
19
2006-8-8 17:18
5069

【文章标题】: D4ph1_-_Crackme#3的破解
【文章作者】: jdxyw
【软件名称】: D4ph1_-_Crackme#3
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: MASM
【使用工具】: OD peid
【操作平台】: XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  首先,PEID查壳,无壳
  
  运行,有窗口,也有提示语言
  
  运行后,载入,F9运行,跳出个窗口,说是不能debugger,查看字符串参考,ASCII "Debugger found...I think im gonna kill myself!:("
  来到此处的代码,向上看,来到 004011F3     68 D1314000    PUSH Crackme#.004031D1
  这个就是检查是否有debugger的开始处,只要跳开此处即可,将 PUSH Crackme#.004031D1,改为 jmp 004012B5
  
  00401106  |. 68 06354000    PUSH Crackme#.00403506                   ; /pBufferSize = Crackme#.00403506
  0040110B  |. 68 F6344000    PUSH Crackme#.004034F6                   ; |Buffer = Crackme#.004034F6
  00401110  |. E8 67040000    CALL <JMP.&kernel32.GetComputerNameA>    ; \GetComputerNameA
  
  由此这段代码,我们可以猜想这个注册码应该是和每个机器的信息是有关的。我们暂时记下
  
  004013BA  |. 49             DEC ECX
  004013BB  |. 33D2           XOR EDX,EDX
  004013BD  |. 4A             DEC EDX
  004013BE  |. 33F6           XOR ESI,ESI
  004013C0  |. 4E             DEC ESI
  004013C1  |. 33C0           XOR EAX,EAX
  004013C3  |. A1 6C324000    MOV EAX,DWORD PTR DS:[40326C]
  004013C8  |. 48             DEC EAX
  004013C9  |. 50             PUSH EAX
  004013CA  |> 46             /INC ESI
  004013CB  |. 41             |INC ECX
  004013CC  |. 0FBE81 F034400>|MOVSX EAX,BYTE PTR DS:[ECX+4034F0]                 ;注意4034F0里面的内容,这里就是机器的信息,用来计算注册码的
  004013D3  |. 0FBE9E EC31400>|MOVSX EBX,BYTE PTR DS:[ESI+4031EC]                 ;这里保存着用户名
  004013DA  |. 83F0 12        |XOR EAX,12
  004013DD  |. 83C0 34        |ADD EAX,34                                          ;以下就都是一些计算
  004013E0  |. C1E3 03        |SHL EBX,3
  004013E3  |. 83EB 20        |SUB EBX,20
  004013E6  |. 83F3 66        |XOR EBX,66
  004013E9  |. 32C3           |XOR AL,BL
  004013EB  |. 03C3           |ADD EAX,EBX
  004013ED  |. E8 5CFDFFFF    |CALL Crackme#.0040114E                              ;这个是个关键,在里面计算并且最终生成注册码保存起来
  004013F2  |. 58             |POP EAX
  004013F3  |. 3BF0           |CMP ESI,EAX
  004013F5  |. 50             |PUSH EAX
  004013F6  |. 74 0A          |JE SHORT Crackme#.00401402
  004013F8  |. 83F9 03        |CMP ECX,3
  004013FB  |. 75 03          |JNZ SHORT Crackme#.00401400
  004013FD  |. 33C9           |XOR ECX,ECX
  004013FF  |. 49             |DEC ECX
  00401400  |>^EB C8          \JMP SHORT Crackme#.004013CA
  00401402  |> 58             POP EAX
  00401403  |. 42             INC EDX
  00401404  |. C682 70334000 >MOV BYTE PTR DS:[EDX+403370],2D
  0040140B  |. 33C9           XOR ECX,ECX
  0040140D  |. 49             DEC ECX
  0040140E  |. BB 13000000    MOV EBX,13
  00401413  |. 33C0           XOR EAX,EAX
  00401415  |> 41             /INC ECX
  00401416  |. 0FBEB1 F434400>|MOVSX ESI,BYTE PTR DS:[ECX+4034F4]
  0040141D  |. 0FBEBB B731400>|MOVSX EDI,BYTE PTR DS:[EBX+4031B7]
  00401424  |. 2BFE           |SUB EDI,ESI
  00401426  |. 03C7           |ADD EAX,EDI
  00401428  |. 2BC6           |SUB EAX,ESI
  0040142A  |. C1E0 04        |SHL EAX,4
  0040142D  |. 83F9 01        |CMP ECX,1
  00401430  |.^75 E3          \JNZ SHORT Crackme#.00401415
  00401432  |. C1E8 04        SHR EAX,4
  00401435  |. 33C9           XOR ECX,ECX
  00401437  |. 49             DEC ECX
  00401438  |> 41             /INC ECX
  00401439  |. E8 10FDFFFF    |CALL Crackme#.0040114E
  0040143E  |. 8AC4           |MOV AL,AH
  00401440  |. 83F9 01        |CMP ECX,1
  00401443  |.^75 F3          \JNZ SHORT Crackme#.00401438
  00401445  |. 42             INC EDX
  00401446  |. C682 70334000 >MOV BYTE PTR DS:[EDX+403370],2D
  0040144D  |. 33C9           XOR ECX,ECX
  0040144F  |. 49             DEC ECX
  00401450  |. 33FF           XOR EDI,EDI
  00401452  |. 0FBE35 0635400>MOVSX ESI,BYTE PTR DS:[403506]
  00401459  |> 41             /INC ECX
  0040145A  |. 0FBE81 F634400>|MOVSX EAX,BYTE PTR DS:[ECX+4034F6]
  00401461  |. 8B9F 07124000  |MOV EBX,DWORD PTR DS:[EDI+401207]
  00401467  |. 33C3           |XOR EAX,EBX
  00401469  |. 331D 06354000  |XOR EBX,DWORD PTR DS:[403506]
  0040146F  |. 2BD8           |SUB EBX,EAX
  00401471  |. 2B1D 06354000  |SUB EBX,DWORD PTR DS:[403506]
  00401477  |. 03C3           |ADD EAX,EBX
  00401479  |. E8 D0FCFFFF    |CALL Crackme#.0040114E
  0040147E  |. 83C7 04        |ADD EDI,4
  00401481  |. 4E             |DEC ESI
  00401482  |.^75 D5          \JNZ SHORT Crackme#.00401459              这个注册码的计算最终将结果保存在00403370,你甚至可以只要在这里下个断点就可以
                                                                        然后查看00403370的内容就可以了
  00401484  |. 68 70334000    PUSH Crackme#.00403370                   ; /String = ""
  00401489  |. E8 1E010000    CALL <JMP.&kernel32.lstrlenA>            ; \lstrlenA
  0040148E  |. 8BC8           MOV ECX,EAX
  00401490  |. 41             INC ECX
  00401491  |> 49             /DEC ECX
  00401492  |. 0FBE81 7032400>|MOVSX EAX,BYTE PTR DS:[ECX+403270]
  00401499  |. 0FBE99 7033400>|MOVSX EBX,BYTE PTR DS:[ECX+403370]
  004014A0  |. 3BC3           |CMP EAX,EBX
  004014A2  |. 75 1A          |JNZ SHORT Crackme#.004014BE
  004014A4  |. 83F9 00        |CMP ECX,0
  004014A7  |.^75 E8          \JNZ SHORT Crackme#.00401491
  004014A9  |. 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
  004014AB  |. 68 00304000    PUSH Crackme#.00403000                   ; |Title = "Crackme#3 By D4ph1"
  004014B0  |. 68 E0304000    PUSH Crackme#.004030E0                   ; |Text = "Great work!Hope this is coming from your keygenerator!:)"
  004014B5  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
  004014B7  |. E8 90000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  004014BC  |. EB 28          JMP SHORT Crackme#.004014E6
  004014BE  |> 6A 10          PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  004014C0  |. 68 00304000    PUSH Crackme#.00403000                   ; |Title = "Crackme#3 By D4ph1"
  004014C5  |. 68 19314000    PUSH Crackme#.00403119                   ; |Text = "This is not the right serial..."
  004014CA  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
  004014CC  |. E8 7B000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  004014D1  |. EB 13          JMP SHORT Crackme#.004014E6
  004014D3  |> 6A 10          PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  004014D5  |. 68 00304000    PUSH Crackme#.00403000                   ; |Title = "Crackme#3 By D4ph1"
  004014DA  |. 68 BB304000    PUSH Crackme#.004030BB                   ; |Text = "You have to write a Serial first...!"
  004014DF  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
  004014E1  |. E8 66000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  004014E6  |> E8 93FCFFFF    CALL Crackme#.0040117E
  004014EB  |. EB 2C          JMP SHORT Crackme#.00401519
  004014ED  |> 0BC0           OR EAX,EAX
  004014EF  |. 75 15          JNZ SHORT Crackme#.00401506
  004014F1  |. 6A 10          PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  004014F3  |. 68 00304000    PUSH Crackme#.00403000                   ; |Title = "Crackme#3 By D4ph1"
  004014F8  |. 68 98304000    PUSH Crackme#.00403098                   ; |Text = "You have to write a Name first...!"
  004014FD  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
  004014FF  |. E8 48000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  00401504  |. EB 13          JMP SHORT Crackme#.00401519
  00401506  |> 6A 10          PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  00401508  |. 68 00304000    PUSH Crackme#.00403000                   ; |Title = "Crackme#3 By D4ph1"
  0040150D  |. 68 75304000    PUSH Crackme#.00403075                   ; |Text = "The Name you write is not correct!"
  00401512  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
  00401514  |. E8 33000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  00401519  |> EB 09          JMP SHORT Crackme#.00401524
  0040151B  |> B8 00000000    MOV EAX,0
  00401520  |. C9             LEAVE
  00401521  |. C2 1000        RETN 10
  00401524  |> B8 01000000    MOV EAX,1
  00401529  |. C9             LEAVE
  0040152A  \. C2 1000        RETN 10
  
  
  我的用户名是yutou注册码7E8606DA7E-3605-6BE980FD5600FE00002F2975F65800
  
   
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年08月08日 17:16:17


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
有完整的算法.就完美了!!呵呵
2006-8-8 22:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习,学习,再学习
2006-8-10 14:41
0
游客
登录 | 注册 方可回帖
返回
//