wzwgp兄的CARCK ME 破解手记
【破文标题】wzwgp兄的CARCK ME【破文作者】OBI-ONE
【作者邮箱】[email protected]
【作者主页】
【破解工具】PEiD,W32DASM,UC32,OD
【破解平台】Windows 2K&XP
【软件名称】
【软件大小】
【原版下载】https://www.chinapyg.com/viewthread.php?tid=6154&pid=37515&page=1&extra=page%3D1#pid37515
【保护方式】注册码
【软件简介】WZWGP兄的第一个CRACK ME
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:-)
------------------------------------------------------------------------
1)首先试运行,随便输入提示注册码不正确,好的记下关键字串,
2)查壳,没壳,真是感动!
3)OD载入,下BP MESSAGEBOXA断点,运行程序,输入试验码19820421,用户名OBIONE点确定,程序被断下,返回到汇编窗口,记下地址00450289|.E8 823BFBFF CALL CrackMe1.00403E10
0045028E|.8B45 F4 MOV EAX,DWORD PTR SS:
00450291|.E8 3A3EFBFF CALL CrackMe1.004040D0
00450296|.8BD8 MOV EBX,EAX
00450298|.83EB 02 SUB EBX,2
0045029B|.7C 36 JL SHORT CrackMe1.004502D3
4)在0045028E下断,再次确定,程序被断下!
004501BC/.55 PUSH EBP
004501BD|.8BEC MOV EBP,ESP
004501BF|.B9 0D000000 MOV ECX,0D
004501C4|>6A 00 /PUSH 0
004501C6|.6A 00 |PUSH 0
004501C8|.49 |DEC ECX
004501C9|.^ 75 F9 \JNZ SHORT CrackMe1.004501C4
004501CB|.53 PUSH EBX
004501CC|.56 PUSH ESI
004501CD|.57 PUSH EDI
004501CE|.8BF8 MOV EDI,EAX
004501D0|.33C0 XOR EAX,EAX
004501D2|.55 PUSH EBP
004501D3|.68 DC044500 PUSH CrackMe1.004504DC
004501D8|.64:FF30 PUSH DWORD PTR FS:
004501DB|.64:8920 MOV DWORD PTR FS:,ESP
004501DE|.8D55 C8 LEA EDX,DWORD PTR SS:
004501E1|.8B87 F8020000 MOV EAX,DWORD PTR DS:
004501E7|.E8 30F2FDFF CALL CrackMe1.0042F41C
004501EC|.8B45 C8 MOV EAX,DWORD PTR SS:
004501EF|.E8 DC3EFBFF CALL CrackMe1.004040D0 测试有没有用户名
004501F4|.85C0 TEST EAX,EAX
004501F6|.75 18 JNZ SHORT CrackMe1.00450210 没有就提示:请输入用户名
004501F8|.6A 30 PUSH 30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
004501FA|.68 EC044500 PUSH CrackMe1.004504EC ; |Title = "提示"
004501FF|.68 F4044500 PUSH CrackMe1.004504F4 ; |Text = "请输入用户名!"
00450204|.6A 00 PUSH 0 ; |hOwner = NULL
00450206|.E8 8D62FBFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
0045020B|.E9 C3000000 JMP CrackMe1.004502D3
00450210|>8D55 C4 LEA EDX,DWORD PTR SS:
00450213|.8B87 FC020000 MOV EAX,DWORD PTR DS:
00450219|.E8 FEF1FDFF CALL CrackMe1.0042F41C
0045021E|.8B45 C4 MOV EAX,DWORD PTR SS:
00450221|.E8 AA3EFBFF CALL CrackMe1.004040D0
00450226|.83F8 06 CMP EAX,6 测试注册码是否小于6位,小于就出错
00450229|.7D 18 JGE SHORT CrackMe1.00450243
0045022B|.6A 30 PUSH 30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0045022D|.68 EC044500 PUSH CrackMe1.004504EC ; |Title = "提示"
00450232|.68 04054500 PUSH CrackMe1.00450504 ; |Text = "输入的注册码位数不够!"
00450237|.6A 00 PUSH 0 ; |hOwner = NULL
00450239|.E8 5A62FBFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
00450261|.BA 38054500 MOV EDX,CrackMe1.00450538 ;ASCII "pygs5jd3klxt" 一看就是PYG的兄弟哦,呵呵!!
00450266|.E8 3D3CFBFF CALL CrackMe1.00403EA8
0045026B|.8D45 EC LEA EAX,DWORD PTR SS:
0045026E|.BA 50054500 MOV EDX,CrackMe1.00450550
00450273|.E8 303CFBFF CALL CrackMe1.00403EA8
00450278|.8D45 F4 LEA EAX,DWORD PTR SS:
0045027B|.8B4D F8 MOV ECX,DWORD PTR SS:
0045027E|.8B55 FC MOV EDX,DWORD PTR SS:
00450281|.E8 963EFBFF CALL CrackMe1.0040411C
00450286|.8D45 F0 LEA EAX,DWORD PTR SS:
00450289|.E8 823BFBFF CALL CrackMe1.00403E10
0045028E|.8B45 F4 MOV EAX,DWORD PTR SS:
00450291|.E8 3A3EFBFF CALL CrackMe1.004040D0
00450296|.8BD8 MOV EBX,EAX
00450298|.83EB 02 SUB EBX,2
0045029B|.7C 36 JL SHORT CrackMe1.004502D3
0045029D|.43 INC EBX
0045029E|.BE 02000000 MOV ESI,2
004502A3|>8BC6 /MOV EAX,ESI 一组循环,不知什么作用,同结果好像没关系!应该是马夹!
004502A5|.25 01000080 |AND EAX,80000001
004502AA|.79 05 |JNS SHORT CrackMe1.004502B1
004502AC|.48 |DEC EAX
004502AD|.83C8 FE |OR EAX,FFFFFFFE
004502B0|.40 |INC EAX
004502B1|>85C0 |TEST EAX,EAX
004502B3|.75 1A |JNZ SHORT CrackMe1.004502CF
004502B5|.8D45 C0 |LEA EAX,DWORD PTR SS:
004502B8|.8B55 F4 |MOV EDX,DWORD PTR SS:
004502BB|.8A5432 FF |MOV DL,BYTE PTR DS:
004502BF|.E8 343DFBFF |CALL CrackMe1.00403FF8
004502C4|.8B55 C0 |MOV EDX,DWORD PTR SS:
004502C7|.8D45 F0 |LEA EAX,DWORD PTR SS:
004502CA|.E8 093EFBFF |CALL CrackMe1.004040D8
004502CF|>46 |INC ESI
004502D0|.4B |DEC EBX
004502D1|.^ 75 D0 \JNZ SHORT CrackMe1.004502A3
004502D3|>8B45 F0 MOV EAX,DWORD PTR SS:
004502D6|.E8 F53DFBFF CALL CrackMe1.004040D0 取用户名的2.4.6位+pygs5jd3klxt里的2.4.6.8.10.12位 得到结果boeysj3lt,
004502DB|.8BD8 MOV EBX,EAX
004502DD|.85DB TEST EBX,EBX 确实不知有什么用,
004502DF|.7E 29 JLE SHORT CrackMe1.0045030A
004502E1|.BE 01000000 MOV ESI,1
004502E6|>8D4D BC /LEA ECX,DWORD PTR SS:
004502E9|.8B45 F0 |MOV EAX,DWORD PTR SS: 好像又是一件马夹!
004502EC|.0FB64430 FF |MOVZX EAX,BYTE PTR DS:
004502F1|.BA 02000000 |MOV EDX,2
004502F6|.E8 6179FBFF |CALL CrackMe1.00407C5C
004502FB|.8B55 BC |MOV EDX,DWORD PTR SS:
004502FE|.8D45 E4 |LEA EAX,DWORD PTR SS:
00450301|.E8 D23DFBFF |CALL CrackMe1.004040D8
00450306|.46 |INC ESI
00450307|.4B |DEC EBX
00450308|.^ 75 DC \JNZ SHORT CrackMe1.004502E6
0045030A|>8D45 E0 LEA EAX,DWORD PTR SS:
0045030D|.50 PUSH EAX
0045030E|.B9 01000000 MOV ECX,1
00450313|.BA 01000000 MOV EDX,1
00450318|.8B45 E4 MOV EAX,DWORD PTR SS:
0045031B|.E8 1040FBFF CALL CrackMe1.00404330
00450320|.8D45 DC LEA EAX,DWORD PTR SS:
00450323|.50 PUSH EAX
00450324|.B9 01000000 MOV ECX,1
00450329
中间省略…………
00450411|.83EB 02 SUB EBX,2
00450414 7C 44 JL SHORT CrackMe1.0045045A
00450416|.43 INC EBX
00450417|.BE 02000000 MOV ESI,2 重要的循环,分别取假码的2.4.6位
0045041C|>8BC6 /MOV EAX,ESI
0045041E|.25 01000080 |AND EAX,80000001
00450423|.79 05 |JNS SHORT CrackMe1.0045042A
00450425|.48 |DEC EAX
00450426|.83C8 FE |OR EAX,FFFFFFFE
00450429|.40 |INC EAX
0045042A|>85C0 |TEST EAX,EAX
0045042C|.75 28 |JNZ SHORT CrackMe1.00450456
0045042E|.8D55 98 |LEA EDX,DWORD PTR SS:
00450431|.8B87 FC020000 |MOV EAX,DWORD PTR DS:
00450437|.E8 E0EFFDFF |CALL CrackMe1.0042F41C
0045043C|.8B45 98 |MOV EAX,DWORD PTR SS:
0045043F|.8A5430 FF |MOV DL,BYTE PTR DS:
00450443|.8D45 9C |LEA EAX,DWORD PTR SS:
00450446|.E8 AD3BFBFF |CALL CrackMe1.00403FF8
0045044B|.8B55 9C |MOV EDX,DWORD PTR SS:
0045044E|.8D45 D4 |LEA EAX,DWORD PTR SS:
00450451|.E8 823CFBFF |CALL CrackMe1.004040D8
00450456|>46 |INC ESI
00450457|.4B |DEC EBX
00450458|.^ 75 C2 \JNZ SHORT CrackMe1.0045041C
0045045A|>8B45 D0 MOV EAX,DWORD PTR SS: 取到2.4.6位同119进行比较
0045045D|.8B55 D4 MOV EDX,DWORD PTR SS:
00450460|.E8 B73DFBFF CALL CrackMe1.0040421C 关键CALL,
00450465 75 15 JNZ SHORT CrackMe1.0045047C 关键跳,成功就OVER,爆破就NOP掉
00450467|.6A 30 PUSH 30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00450469|.68 EC044500 PUSH CrackMe1.004504EC ; |Title = "提示"
0045046E|.68 68054500 PUSH CrackMe1.00450568 ; |Text = "你真棒!"
00450473|.6A 00 PUSH 0 ; |hOwner = NULL
00450475|.E8 1E60FBFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
0045047A|.EB 13 JMP SHORT CrackMe1.0045048F
0045047C|>6A 30 PUSH 30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0045047E|.68 EC044500 PUSH CrackMe1.004504EC ; |Title = "提示"
00450483|.68 74054500 PUSH CrackMe1.00450574 ; |Text = "继续努力!"
00450488|.6A 00 PUSH 0 ; |hOwner = NULL
0045048A|.E8 0960FBFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
到此注册成功,注册码类似于这种形式的都 行:
用户名:obione
注册码:*1*1*9,如111199
另:如果用户名是大写的话就会同997进行比较,如果用户名是数字的话就会同779进行比较!中文就同999比较!
------------------------------------------------------------------------
这只是我一点不成熟的看法,如有更好的方法请赐教!谢谢!!
QQ:171003683
------------------------------------------------------------------------
【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 野猫III 于 2006-7-19 12:35 编辑 ] 学习~~~ 我写的太差,希望兄弟多提宝贵意见。
如用“黑夜彩虹”版主的大号“119”就不行了。 到此注册成功,注册码类似于这种形式的都 行:
用户名:OBIONE
注册码:*1*1*9,如111199
恐怕不对吧?
119不是固定的,而且于用户名有绝对的联系!再调试! 原帖由 飘云 于 2006-7-18 11:12 发表
恐怕不对吧?
119不是固定的,而且于用户名有绝对的联系!再调试!
谢谢指点,
119可能不是固定 的,但我用了很多用户名来试除了中文用户名外都 成功了呢!
而且我发现,注册名只能用小写字母(大写的数字中文的都不行),不知道是不是BUG,还是WZWGP老兄故意搞成这样的!
[ 本帖最后由 obi-one 于 2006-7-18 11:26 编辑 ] 修正之前的说法:
在飘去老大的导下,还发现,如果用户名是大写的话就会同997进行比较,如果用户名是数字的话就会同779进行比较!谢谢!!
[ 本帖最后由 obi-one 于 2006-7-18 11:37 编辑 ]
试试黑夜彩虹
试试黑夜彩虹我的CrackMe有些问题。 原帖由 obi-one 于 2006-7-18 11:29 发表
修正之前的说法:
在飘去老大的导下,还发现,如果用户名是大写的话就会同997进行比较,如果用户名是数字的话就会同779进行比较!中文就同999比较!谢谢!!
不是“发现” 是有“证据”的,用KeyGen 表达可能更加方便,加油!
BTW:每篇文章我都需要认真的审核,以示对全体会员负责~~~ 勿怪!;) 原帖由 wzwgp 于 2006-7-18 11:32 发表
试试黑夜彩虹
我的CrackMe有些问题。
要有自信,CrackMe没有存在实质的问题(逻辑问题除外) 原帖由 wzwgp 于 2006-7-18 11:32 发表
试试黑夜彩虹
我的CrackMe有些问题。
这个是同779比的,注册机我想想看看
页:
[1]
2