看了论坛精华五的这一篇文章,就想跟跟较新版的五笔快打2.07,因为发现它不好对付~
参考文章:
标 题:1.6正式版本PJ方法 (6千字)
发信人:ircbox
时 间:2002-6-27
详细信息:
感谢DFCG的小白菜提供
出处:
http://www.cn12.com
五笔快打1.6正式版本PJ方法
=====================
软件名称:****1.6正式版
软件下载:
补丁下载:(正常运行可能要下补丁,我的机子可不要这个)
PJ工具:SOFTICE
特点:
1、一机一码,每位注册码在输入时验证,前一位如不正确,将使下一位也不正确,全部输入共
五个窗口,每个窗口有不同的位置的验证!具体如下:
2、对抗TRW,请不要使用TRW来跟踪!
3、使用SOFTICE 要隐藏!
具体PJ方法:
=========
第一、在"帮助"->"关于"复制本机序列号
第二、在"帮助"->"注册"处粘贴本机序列号,我的序列号是:WBKD-CV35-36MH-J96W
第三、注册码PJ!
第一注册窗口-注册码PJ
先设置断点:用soft(加载icedump.exe),设置bpx hmemcpy
在第一窗口处乱填第一位字母:H 立即被拦截,注意,请不要中断断点BD * ,否则也不能跟踪。
按F12共12次来到
0167:00408E1E FF7514 PUSH DWORD PTR [EBP+14]
0167:00408E21 FF159CFB5800 CALL [0058FB9C]
0167:00408E27 8A0D6CD25800 MOV CL,[0058D26C]
按F10开始跟踪一直来到这里:
0167:00408E88 8D843510FFFFFF LEA EAX,[ESI+EBP-00F0]
0167:00408E8F 50 PUSH EAX //EAX 取序列号
0167:00408E90 8D45E0 LEA EAX,[EBP-20]
0167:00408E93 50 PUSH EAX
0167:00408E94 FF1544F95800 CALL [0058F944]
0167:00408E9A 53 PUSH EBX
0167:00408E9B 6870B35800 PUSH 0058B370
0167:00408EA0 E81E82FFFF CALL 004010C3
0167:00408EA5 8D45C8 LEA EAX,[EBP-38]
0167:00408EA8 50 PUSH EAX
0167:00408EA9 8D45E0 LEA EAX,[EBP-20]
0167:00408EAC 50 PUSH EAX //取第一部分的序列号
0167:00408EAD E88982FFFF CALL 0040113B
0167:00408EB2 8D45C8 LEA EAX,[EBP-38]
====
0167:00408F42 8D4512 LEA EAX,[EBP+12]
0167:00408F45 50 PUSH EAX
0167:00408F46 FF1584FB5800 CALL [0058FB84]
0167:00408F4C 8A4435F8 MOV AL,[ESI+EBP-08] ////把假的注册码放入AL中!,
0167:00408F50 3A4512 CMP AL,[EBP+12] //[EBP+12]为真的注册码,真假比较
//第一注册窗口在比较验证, 即我的:h 与 K
//设置断点: bpx 00408F50
//按CTRL+D 返回,更改第一注册码为K,同时输入第二位注册码:K
//立即被拦截,此时,按F5,一次为验证第一位注册码,
//按F5,二次验证第二位,依此累推,真至本注册窗口输完!
//
// 我的第一窗口注册码是:KECQ
0167:00408F53 7527 JNZ 00408F7C // 不相等就玩完!
0167:00408F55 8D4512 LEA EAX,[EBP+12]
0167:00408F58 3BF3 CMP ESI,EBX
0167:00408F5A 50 PUSH EAX
.....
0167:00408F83 E828770200 CALL 004306B0
0167:00408F88 83C40C ADD ESP,0C
0167:00408F8B 46 INC ESI //完成后,ESI 加上1,作累加器
0167:00408F8C 3B750C CMP ESI,[EBP+0C]
0167:00408F8F 0F8CD7FEFFFF JL 00408E6C 返上继续验证下一位↑
0167:00408F95 8B3584FB5800 MOV ESI,[0058FB84]
0167:00408F9B 8D45F0 LEA EAX,[EBP-10]
0167:00408F9E 50 PUSH EAX
第二注册窗口-注册码PJ
第一步:方法如同第一窗口一样,
第二步:在00409174 处设置断点,
// 当输入第一位假的注册码后,按F5一次 D EBP+12 见真的注册码
// 当输入第二位假的注册码后,按F5二次 D EBP+12 见真的注册码
// 依此累推,真至本注册窗口输完!
// 我的注册码:****
0167:0040916A FF1584FB5800 CALL [0058FB84]
0167:00409170 8A4435F8 MOV AL,[ESI+EBP-08] //把假的注册码放入AL中!
0167:00409174 3A4512 CMP AL,[EBP+12] // 真假比较![EBP+12]为真注册码!
0167:00409177 7527 JNZ 004091A0 //不相等就玩完!
0167:00409179 8D4512 LEA EAX,[EBP+12]
0167:0040917C 3BF3 CMP ESI,EBX
0167:0040917E 50 PUSH EAX
0167:0040917F 8D45F0 LEA EAX,[EBP-10]
0167:00409182 C704B5383B5800010000MOV DWORD PTR [ESI*4+00583B38],00000001
0167:0040918D 50 PUSH EAX
0167:0040918E 7508 JNZ 00409198
0167:00409190 FF1554F95800 CALL [0058F954]
0167:00409196 EB17 JMP 004091AF
0167:00409198 FF1548F95800 CALL [0058F948]
0167:0040919E EB0F JMP 004091AF
0167:004091A0 6A05 PUSH 05
0167:004091A2 8D45F0 LEA EAX,[EBP-10]
0167:004091A5 53 PUSH EBX
0167:004091A6 50 PUSH EAX
0167:004091A7 E804750200 CALL 004306B0
0167:004091AC 83C40C ADD ESP,0C
0167:004091AF 46 INC ESI
0167:004091B0 3B750C CMP ESI,[EBP+0C]
0167:004091B3 0F8C9EFEFFFF JL 00409057 返上比较下一位注册码
0167:004091B9 8B3584FB5800 MOV ESI,[0058FB84]
===
第三注册窗口-注册码PJ
第一步:方法如同第一窗口一样,
第二步:在00409375 处设置断点,
// 当输入第一位假的注册码后,按F5一次 D EBP+12 见真的注册码
// 当输入第二位假的注册码后,按F5二次 D EBP+12 见真的注册码
// 依此累推,真至本注册窗口输完!
// 我的注册码:****
==
第四注册窗口-注册码PJ
第一步:方法如同第一窗口一样,
第二步:在00409705 处设置断点,
// 当输入第一位假的注册码后,按F5一次 D EBP+12 见真的注册码
// 当输入第二位假的注册码后,按F5二次 D EBP+12 见真的注册码
// 依此累推,真至本注册窗口输完!
// 我的注册码:****
===
第五注册窗口-注册码PJ
第一步:方法如同第一窗口一样,
第二步:在00409AA9 处设置断点,
// 当输入第一位假的注册码后,按F5一次 D EBP+12 见真的注册码
// 当输入第二位假的注册码后,按F5二次 D EBP+12 见真的注册码
// 依此累推,真至本注册窗口输完!
// 我的注册码:****
=====
完成,我的序列号:WBKD-CV35-36MH-J96W
我的注册码:KECQ-****-****-***-****
我的破解过程:
目标:破解五笔快打2.07
工具:用ptrw1.22(不喜欢softice,觉得还是国产的亲切),w32dasm
因为对抗ptrw,故没敢先打开它,首先打开五笔快打,出现注册对话框,填入合适的序列号我填的是WBKD-AA22-11AA-J44W
然后光标跳到注册码的第一框,打开ptrw1.22,下断bpx getdlgitemtexta,按一次F12回到wbkd.TEXT,向下一直跟到
一处明显的cmp,
* Reference To: USER32.CharUpperA, Ord:0034h
|
:0040C06E FF1590CD5A00 Call dword ptr [005ACD90]
:0040C074 8A843D9CFEFFFF mov al, byte ptr [ebp+edi-00000164]
:0040C07B 3A8510FEFFFF cmp al, byte ptr [ebp+FFFFFE10] (此处的比较为关键比较,al中为你输的值)
:0040C081 753B jne 0040C0BE (不相等就跳走)
:0040C083 C704BD9CE3590001000000 mov dword ptr [4*edi+0059E39C], 00000001
:0040C08E 85FF test edi, edi
:0040C090 7516 jne 0040C0A8 (测试位数是否为0,不为0就跳走)
向下来到
* Reference To: KERNEL32.lstrlenA, Ord:039Eh
|
:0040C0F8 FF1548CB5A00 Call dword ptr [005ACB48]
:0040C0FE 83F804 cmp eax, 00000004 (比较第一框是否输够四位,够的话变灰,光标到下一个
:0040C101 0F85C7020000 jne 0040C3CE (不是的话跳走,可继续输)
基本上小弟只能看懂这些了~!
同样的第二框重要比较在40c31e
第三框重要比较在40d31e
第四框重要比较在40cebc
第五框重要比较在40c5f2
跟到最后,注册码整理出来是CCAK-9WZ5-L57I-W2MX-BWDL
迫不及待的填入对话框,按住注册按钮,几秒种后出现了注册成功的对话框。惊喜万分,可是
一点确定发现并没有成功的注册,然后又试了好几次,当出现注册成功对话框后,检查注册表项HKCU/SOFTWARE/五笔快打
/default/注册成功为2,HKUS/.DEFAULT/SOFTWARE/五笔快打/DEFAULT/注册成功为2,然后一点确定软件关闭,重新打开仍然没有注册
,检查两处注册表项为0,不好意思让各位白替我高兴了,不过我的第一次破解经历,可花费了2星期呀,怎么也解释不通,还请高手指点
没办法破了白忙活了半天!
试试暴力破戒吧,简称爆破,呵呵,终于让我尝到了胜利的喜悦!
分析:看了该软件有试用时间限制,过了15天就直接提示超出时限,通过反汇编,发现所有有用的提示信息被加密,没有用字串的形式,
而是在程序中一个字一个字读码,通过多次尝试,发现了本软件中经典的判断是否注册的方式,
:004025AC E8DAEBFFFF call 0040118B
:004025B1 6A04 push 00000004
:004025B3 68AC725A00 push 005A72AC
:004025B8 6814725A00 push 005A7214
:004025BD 68FC705A00 push 005A70FC
:004025C2 6801000080 push 80000001
* Reference To: WBKDFUN.GetRegValue, Ord:0012h
|
:004025C7 E8949D0400 Call 0044C360 (读取注册表中注册标志)
:004025CC A1AC725A00 mov eax, dword ptr [005A72AC] (放到 EAX中)
:004025D1 83C41C add esp, 0000001C
:004025D4 85C0 test eax, eax (判断标志是否为0
:004025D6 C705A4725A0001000000 mov dword ptr [005A72A4], 00000001
:004025E0 753B jne 0040261D 不为零跳转
:004025E2 6A04 push 00000004
:004025E4 68AC725A00 push 005A72AC
:004025E9 6814725A00 push 005A7214
:004025EE 68FC705A00 push 005A70FC
:004025F3 6801000080 push 80000001
* Reference To: WBKDFUN.GetRegValue, Ord:0012h
|
:004025F8 E8639D0400 Call 0044C360
:004025FD A1AC725A00 mov eax, dword ptr [005A72AC]
:00402602 83C414 add esp, 00000014
:00402605 85C0 test eax, eax
:00402607 753A jne 00402643
:00402609 6A00 push 00000000
WBKD.dLL中有getregvalue的Function
总结本软件中所有注册标志比较地址:
4036D5(判断试用时间
4025e0(可取消最初的注册对话框
40262c
402643
404c9d 注册菜单是否显示
404cb7 enable 所有第二个菜单
408f5c
408ff6
409012(此处并非比较注册标志,修改此处才可使菜单可用,好难找呀
40e584 菜单中已注册
43f52a(此处并非比较注册标志,修改此处才可使菜单可用,好难找呀
.
.
.
.
还有一些菜单项的可用比较,基本都是上述读注册标志的,很好找,基
本用bpx messageboxa 都能断到,或 bpx getregvalue 不多说了,第一次写写的不知道清楚不!
多提意见,只是想和大家分享成功!~看表,!哇,XX小时又过去了~~,这就是我第一次破解的心情
不知大家是否有过此经历!
有高手帮忙
(1)解释上述注册码失败的原因么????(困惑不已)
(2)不知道w32dasm反汇编后,有很多代码跟着就到了ret10,往下不知道去哪了
( 3) 不知是不是该软件采用了段压缩,因为我看到有这样的段UPX1
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!