lfq168 发表于 2005-11-11 14:48:54

pentacle写的第二个CrackeMe破解说明

【破文标题】对pentacle作的CRACKME
【破文作者】lfq168
【作者邮箱】[email protected]
【作者主页】
【破解工具】OD1.1,PEID0.94
【破解平台】WinXP SP2
【软件名称】CRACKME
【软件大小】201K
【原版下载】http://ocn.e5v.com/cgi-bin/bbs/ccb/topic_view.cgi?forum=4&article_id=0004051110230324&publishtime_id=0004051110230324&page=30
【保护方式】FSG1.33加壳
【软件简介】
------------------------------------------------------------------------
【破解过程】1.用PEID0.94查壳FSG 1.33 -> dulek/xt,脱壳我就不说了,太容易了我花了5秒.直脱
2.脱壳查到软件是用Borland Delphi 6.0 - 7.0,用DEDE3.5反汇编,我晕,没东西的,只能建文档,很容易知道进入口
yCrackeMe2_1

TForm1.FormCreate                        00454134
TForm1.Button1Click                     004542B0
TForm1.Button2Click                     0045449C
就看TForm1.Button1Click 004542B0用OD载入BP 4542B0就可以中断了
3.重点分析:
004542B0/. 55      push ebp
004542B1|. 8BEC       mov ebp,esp
004542B3|. B9 06000000    mov ecx,6
004542B8|> 6A 00       /push 0
004542BA|. 6A 00       |push 0
004542BC|. 49      |dec ecx
004542BD|.^ 75 F9       \jnz short W_MyCrac.00454>
004542BF|. 53      push ebx
004542C0|. 8BD8       mov ebx,eax
004542C2|. 33C0       xor eax,eax
004542C4|. 55      push ebp
004542C5|. 68 8D444500    push W_MyCrac.0045448D
004542CA|. 64:FF30      push dword ptr fs:
004542CD|. 64:8920      mov dword ptr fs:,es>
004542D0|. 8D55 FC      lea edx,dword ptr ss:[ebp>
004542D3|. 8B83 F8020000   mov eax,dword ptr ds:[ebx>
004542D9|. E8 82EEFDFF    call W_MyCrac.00433160; 取第一个框的假码
004542DE|. 8B45 FC      mov eax,dword ptr ss:[ebp>
004542E1|. 50      push eax         ; 假码进盏
004542E2|. 8D55 F4      lea edx,dword ptr ss:[ebp>
004542E5|. 8B83 14030000   mov eax,dword ptr ds:[ebx>
004542EB|. E8 70EEFDFF    call W_MyCrac.00433160; 这里是取CPU的即时速度
004542F0|. 8B45 F4      mov eax,dword ptr ss:[ebp>
004542F3|. E8 4840FBFF    call W_MyCrac.00408340
004542F8|. 35 39300000    xor eax,3039       ; 把CPU即时速度的十进制与3039异或
004542FD|. 8D55 F8      lea edx,dword ptr ss:[ebp>
00454300|. E8 FF3EFBFF    call W_MyCrac.00408204; 这里是把求到的CPU即时速度的十六进制转成十进制
00454305|. 8B55 F8      mov edx,dword ptr ss:[ebp>
00454308|. 58      pop eax
00454309|. E8 3A03FBFF    call W_MyCrac.00404648; 这里是比较第一框的假码和CPU即时速度和3039异或后的值是否相等
0045430E    0F85 E0000000   jnz W_MyCrac.004543F4   ; <--第一框的爆破点
00454314|. 8D55 F0      lea edx,dword ptr ss:[ebp>
00454317|. 8B83 FC020000   mov eax,dword ptr ds:[ebx>
0045431D|. E8 3EEEFDFF    call W_MyCrac.00433160
00454322|. 8B45 F0      mov eax,dword ptr ss:[ebp>; 取第二框的值
00454325|. 50      push eax
00454326|. 8D55 E8      lea edx,dword ptr ss:[ebp>
00454329|. 8B83 14030000   mov eax,dword ptr ds:[ebx>
0045432F|. E8 2CEEFDFF    call W_MyCrac.00433160; 我晕,也是取CPU即时速度
00454334|. 8B45 E8      mov eax,dword ptr ss:[ebp>
00454337|. E8 0440FBFF    call W_MyCrac.00408340
0045433C|. 35 32090100    xor eax,10932       ; 把取到的即时值与10932相异或
00454341|. 8D55 EC      lea edx,dword ptr ss:[ebp>
00454344|. E8 BB3EFBFF    call W_MyCrac.00408204; 把异或出来的值转十进制
00454349|. 8B55 EC      mov edx,dword ptr ss:[ebp>
0045434C|. 58      pop eax
0045434D|. E8 F602FBFF    call W_MyCrac.00404648
00454352    0F85 9C000000   jnz W_MyCrac.004543F4   ; <--第二框的爆破点
00454358|. 8D55 E4      lea edx,dword ptr ss:[ebp>
0045435B|. 8B83 00030000   mov eax,dword ptr ds:[ebx>
00454361|. E8 FAEDFDFF    call W_MyCrac.00433160
00454366|. 8B45 E4      mov eax,dword ptr ss:[ebp>; 取第三个框的假码
00454369|. 50      push eax
0045436A|. 8D55 DC      lea edx,dword ptr ss:[ebp>
0045436D|. 8B83 14030000   mov eax,dword ptr ds:[ebx>
00454373|. E8 E8EDFDFF    call W_MyCrac.00433160; 取CPU即时速度
00454378|. 8B45 DC      mov eax,dword ptr ss:[ebp>
0045437B|. E8 C03FFBFF    call W_MyCrac.00408340
00454380|. 35 52E70000    xor eax,0E752       ; 和0E752异或
00454385|. 8D55 E0      lea edx,dword ptr ss:[ebp>
00454388|. E8 773EFBFF    call W_MyCrac.00408204
0045438D|. 8B55 E0      mov edx,dword ptr ss:[ebp>
00454390|. 58      pop eax
00454391|. E8 B202FBFF    call W_MyCrac.00404648
00454396    75 5C       jnz short W_MyCrac.004543>; <---第三个框的爆破点
00454398|. 8D55 D8      lea edx,dword ptr ss:[ebp>
0045439B|. 8B83 04030000   mov eax,dword ptr ds:[ebx>
004543A1|. E8 BAEDFDFF    call W_MyCrac.00433160
004543A6|. 8B45 D8      mov eax,dword ptr ss:[ebp>; 取第四个框的假码
004543A9|. 50      push eax
004543AA|. 8D55 D0      lea edx,dword ptr ss:[ebp>
004543AD|. 8B83 14030000   mov eax,dword ptr ds:[ebx>
004543B3|. E8 A8EDFDFF    call W_MyCrac.00433160; 取CPU即时速度
004543B8|. 8B45 D0      mov eax,dword ptr ss:[ebp>
004543BB|. E8 803FFBFF    call W_MyCrac.00408340
004543C0|. 35 83CF0000    xor eax,0CF83       ; 把值与cf83异或
004543C5|. 8D55 D4      lea edx,dword ptr ss:[ebp>
004543C8|. E8 373EFBFF    call W_MyCrac.00408204
004543CD|. 8B55 D4      mov edx,dword ptr ss:[ebp>
004543D0|. 58      pop eax
004543D1|. E8 7202FBFF    call W_MyCrac.00404648
004543D6    75 1C       jnz short W_MyCrac.004543>; <---第四个框的爆破点
004543D8|. 33D2       xor edx,edx      ; 只要把4个改成JMP或者把第一个JNZ改JMP 4543e5就OK了
004543DA|. 8B83 08030000   mov eax,dword ptr ds:[ebx>
004543E0|. E8 9BECFDFF    call W_MyCrac.00433080
004543E5|. B2 01       mov dl,1
004543E7|. 8B83 18030000   mov eax,dword ptr ds:[ebx>
004543ED|. E8 8EECFDFF    call W_MyCrac.00433080
004543F2|. EB 34       jmp short W_MyCrac.004544>
004543F4|> 33D2       xor edx,edx
004543F6|. 8B83 F8020000   mov eax,dword ptr ds:[ebx>
004543FC|. E8 8FEDFDFF    call W_MyCrac.00433190
00454401|. 33D2       xor edx,edx
00454403|. 8B83 FC020000   mov eax,dword ptr ds:[ebx>
00454409|. E8 82EDFDFF    call W_MyCrac.00433190
0045440E|. 33D2       xor edx,edx
00454410|. 8B83 00030000   mov eax,dword ptr ds:[ebx>
00454416|. E8 75EDFDFF    call W_MyCrac.00433190
0045441B|. 33D2       xor edx,edx
0045441D|. 8B83 04030000   mov eax,dword ptr ds:[ebx>
00454423|. E8 68EDFDFF    call W_MyCrac.00433190
00454428|> 33C0       xor eax,eax
0045442A|. 5A      pop edx
0045442B|. 59      pop ecx
0045442C|. 59      pop ecx
0045442D|. 64:8910      mov dword ptr fs:,ed>
00454430|. 68 94444500    push W_MyCrac.00454494
00454435|> 8D45 D0      lea eax,dword ptr ss:[ebp>
00454438|. E8 FFFDFAFF    call W_MyCrac.0040423C
0045443D|. 8D45 D4      lea eax,dword ptr ss:[ebp>
00454440|. E8 F7FDFAFF    call W_MyCrac.0040423C
00454445|. 8D45 D8      lea eax,dword ptr ss:[ebp>
00454448|. BA 02000000    mov edx,2
0045444D|. E8 0EFEFAFF    call W_MyCrac.00404260
00454452|. 8D45 E0      lea eax,dword ptr ss:[ebp>
00454455|. E8 E2FDFAFF    call W_MyCrac.0040423C
0045445A|. 8D45 E4      lea eax,dword ptr ss:[ebp>
0045445D|. BA 02000000    mov edx,2
00454462|. E8 F9FDFAFF    call W_MyCrac.00404260
00454467|. 8D45 EC      lea eax,dword ptr ss:[ebp>
0045446A|. E8 CDFDFAFF    call W_MyCrac.0040423C
0045446F|. 8D45 F0      lea eax,dword ptr ss:[ebp>
00454472|. BA 02000000    mov edx,2
00454477|. E8 E4FDFAFF    call W_MyCrac.00404260
0045447C|. 8D45 F8      lea eax,dword ptr ss:[ebp>
0045447F|. E8 B8FDFAFF    call W_MyCrac.0040423C
00454484|. 8D45 FC      lea eax,dword ptr ss:[ebp>
00454487|. E8 B0FDFAFF    call W_MyCrac.0040423C
0045448C\. C3      retn


------------------------------------------------------------------------
【破解总结】1.其实算法很简单就是取CPU的即时速度和3039异或作第一的注册码.(3039是十六进制哦,别说十进制,不然打PP
2.再与10932异或为第二个框的注册码
3.与0E752异或为第三个框的注册码
4.与0CF83异或为第四个框的注册码

因为pentacle算法有BUG,经WCPUID测试证实,至于说写注册机基本不用写了,因为CPU的频率是按毫秒变动后几位的的就是说我的CPU1.7G取值在1717000到1717090间变动的而且最后二位00-90这数据还是按毫秒变动的,作者编写注册码就已经出现了取CPU频率值错误了,应该把这个CPU值取到M这范围不应该取到字节范围.不然就算是作者也注册不了的.除非爆破.
------------------------------------------------------------------------

【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

underghost 发表于 2005-11-16 20:33:01

好的~支持

pentacle 发表于 2005-11-21 20:45:35

ESP定律轻松搞定~~

pentacle 发表于 2005-11-23 12:08:03

真正的入口点0005477C
页: [1]
查看完整版本: pentacle写的第二个CrackeMe破解说明