发新话题
打印

[转载]注册“Dr.Salman's Windows Power Tools V3.95”

[转载]注册“Dr.Salman's Windows Power Tools V3.95”

文章作者:qduwg

软件功能:Windows系统优化工具,大幅提高系统速度,内存利用率,减少内存碎片,调节硬盘缓存,优化因特网设置,提高

ISDN及拨号上网速度,该软件支持Windows95/98/Me/NT4/2000/XP.注册费U.S.$49.95。未注册版本只有7天试用期。
工具:TRW,PEID。

引子:今天又安装试验了一下这个软件,发现功能比较强大。拿PEID查看,结果是用ASProtect1.2/1.2c->Alexey

Solodovnikov加壳的。今天就在不脱壳的情况下把注册码跟踪出来好了。没有想到比较顺利。随便把跟踪过程一写,算是给

菜鸟的Crackme作业吧。因为没有脱壳,所以跟踪用TRW,为了U出代码好写这篇破文啦。启动注册程序RegWizard.exe,输入

注册码654321。调出TRW,下断点bpxhmemcpy,然后F5退出,点击“AuthenticateandRegisterMe”按钮,被拦住。按8

次F12,换F10跟踪到如下代码处:
0197:6607B2B5CALLNEAR[ECX+10]
0197:6607B2B8MOVEAX,[6610F7FC]//我们返回到这里来。
0197:6607B2BDTESTEAX,EAX
0197:6607B2BFJZ6607B2D6
0197:6607B2C1MOVEAX,[EAX]
0197:6607B2C3TESTEAX,EAX
0197:6607B2C5JZ6607B2D6
0197:6607B2C7MOVEBX,[EBX]//假码地址送EBX。
0197:6607B2C9TESTEBX,EBX
0197:6607B2CBJNZ6607B2D2//跳走。
0197:6607B2CDMOVEBX,66005020
0197:6607B2D2PUSHEBX
0197:6607B2D3CALLEAX//这个函数对注册码进行测试是否为1E,1F。
0197:6607B2D5POPECX
0197:6607B2D6XOREAX,EAX
0197:6607B2D8JMPSHORT6607B2A2//跳到上面去,返回到如下代码处。
===============================================================
下面我们来到主程序空间了:
0197:0047B7F7CALLNEAR[ECX+A0]
0197:0047B7FDTESTEAX,EAX//返回到这里。
0197:0047B7FFFNCLEX
0197:0047B801JNL0047B815//此处自然跳。
0197:0047B803PUSHDWORDA0
0197:0047B808PUSHDWORD0040C3E0
0197:0047B80DPUSHEDI
0197:0047B80EPUSHEAX
0197:0047B80FCALLNEAR[00401050]
0197:0047B815MOVEAX,[EBP-18]//假码地址送EAX。
0197:0047B818PUSHEAX
0197:0047B819PUSHDWORD0040B858//这个就是真码地址。不知为什么此程序员把这个放在眼皮底下呢?
0197:0047B81ECALLNEAR[004010B4]//进入这个CALL就是比较了。我们也进去看看。代码在后。(*)
0197:0047B824MOVEDI,EAX
0197:0047B826LEAECX,[EBP-18]
0197:0047B829NEGEDI
0197:0047B82BSBBEDI,EDI
0197:0047B82DINCEDI
0197:0047B82ENEGEDI
0197:0047B830CALLNEAR[004011C8]
0197:0047B836LEAECX,[EBP-1C]
0197:0047B839CALLNEAR[004011C4]
0197:0047B83FTESTDI,DI//如果注册码正确,则DI为FFFF。
0197:0047B842JZNEAR0047B8E2//这个不会跳则OK。
0197:0047B848PUSHDWORD0040B858//这个又是正确注册码地址。
0197:0047B84DPUSHDWORD0040B678
0197:0047B852PUSHDWORD0040B830
0197:0047B857PUSHDWORD0040B818
0197:0047B85CPUSHDWORD80000002
0197:0047B861CALL004738F0
0197:0047B866MOVECX,[ESI]
0197:0047B868PUSHESI
===============================================================
下面是(*)处的函数调用代码:
0197:66024718PUSHBYTE+00
0197:6602471ACALL`MSVBVM60!__vbaStrComp`
0197:6602471FRET08
0197:66024722CMPDWORD[ESP+04],BYTE+02
0197:66024727JZNEAR660470E0
0197:6602472DPUSHDWORD00030001
0197:66024732PUSHDWORD[ESP+08]
0197:66024736PUSHDWORD[ESP+10]//假码地址进栈。
0197:6602473APUSHDWORD[ESP+18]//真码地址进栈。
0197:6602473ECALL`OLEAUT32!VarBstrCmp`//此处比较。
0197:66024744TESTEAX,EAX
0197:66024746JLNEAR660470E7
0197:6602474CDECEAX
===============================================================
0197:653C2DEDPUSHEBP
0197:653C2DEEMOVEBP,ESP
0197:653C2DF0PUSHECX
0197:653C2DF1PUSHEBX
0197:653C2DF2PUSHESI
0197:653C2DF3MOVESI,[EBP+08]
0197:653C2DF6PUSHEDI//假码地址进栈。
0197:653C2DF7TESTESI,ESI
0197:653C2DF9JNZ653C2E47//此处跳下去。
0197:653C2DFBAND[EBP-04],ESI
0197:653C2DFEMOVECX,[EBP+0C]//真码地址送ECX。
0197:653C2E01TESTECX,ECX
0197:653C2E03JNZ653C2E4F//此处自然跳下面。
0197:653C2E05XOREBX,EBX
0197:653C2E07CMP[EBP-04],EBX
0197:653C2E0AMOVEDX,[EBP-04]
0197:653C2E0DJC653C2E11//此处跳。
0197:653C2E0FMOVEDX,EBX
0197:653C2E11MOVEAX,[EBP+10]
0197:653C2E14TESTEAX,EAX
0197:653C2E16JNZ653C2E73//此处不跳。
0197:653C2E18TESTEDX,EDX
0197:653C2E1AJZ653C2E7C//此处没跳。
0197:653C2E1CMOVEAX,EDX
0197:653C2E1ESHREAX,1
0197:653C2E20MOV[EBP+10],EAX
0197:653C2E23MOVEDI,[EBP+0C]//真码送EDI。
0197:653C2E26MOVESI,[EBP+08]//假码送ESI。
0197:653C2E29MOVECX,[EBP+10]//比较次数为6。
0197:653C2E2CXOREAX,EAX
0197:653C2E2EREPECMPSW//比较。
0197:653C2E31JZ653C2E38//跳走。
0197:653C2E33SBBEAX,EAX
0197:653C2E35SBBEAX,BYTE-01
0197:653C2E38TESTEAX,EAX
0197:653C2E3AJG653C2E81//不跳。
0197:653C2E3CJNL653C2E54//跳走。
0197:653C2E3EXOREAX,EAX
0197:653C2E40POPEDI
0197:653C2E41POPESI
0197:653C2E42POPEBX
0197:653C2E43LEAVE
0197:653C2E44RET10
0197:653C2E47MOVEAX,[ESI-04]
0197:653C2E4AMOV[EBP-04],EAX
0197:653C2E4DJMPSHORT653C2DFE//此处跳上去。
0197:653C2E4FMOVEBX,[ECX-04]
0197:653C2E52JMPSHORT653C2E07//此处跳上去。
0197:653C2E54TESTDL,01
0197:653C2E57JZ653C2E7C//跳走。
*略去几行*
0197:653C2E7CCMP[EBP-04],EBX
0197:653C2E7FJNA653C2E86//跳走。
0197:653C2E81PUSHBYTE+02
0197:653C2E83POPEAX
0197:653C2E84JMPSHORT653C2E40
0197:653C2E86SBBEAX,EAX
0197:653C2E88INCEAX
0197:653C2E89JMPSHORT653C2E40//从这里跳上去,并返回。
===============================================================
后记:小软件几乎是把注册码给你提供到眼皮底下的,作者比较仁慈啊。不过开发者收取的注册费可是不低。这个程序是用VB

写的,既然能够跟踪出其注册码来,就不辛苦的去脱壳了。这个软件不值得费那么大力气。把精力放到更为复杂的程序更好。

用10分钟跟踪出代码,用30分钟才能够写好破文。感谢各位的支持!让大侠笑掉大牙了,非常抱歉!


结论:

JPX785-GT56F-KPL98-RTWQ9


另外,这个软件在H.L.M\Software\Powertool键下面创建了子键SerialNumber,里面放的是注册码的明码。如果修改一下

,就可以重新注册。

TOP

发新话题