|
—
本帖被 惊鸿一剑 从 『应用技术交流』 移动到本区(2009-07-04)
—
Disk Drive Security 3.11破解分析【破文标题】Disk Drive Security 3.11破解分析 【破文作者】萧萧黄叶 【作者邮箱】 【作者主页】 【破解工具】PEiD,C32asm,OD 【破解平台】winxp 【软件名称】Disk Drive Security 3.11 【软件大小】543KB 【原版下载】http://www.newhua.com/soft/4824.htm 【保护方式】 【软件简介】 功能强大的磁盘安全工具,在主界面继承了所有的驱动器设置功能,并将所有可能存在的盘符列表显示。通过安全密码保护机制,能够隐藏或者锁本地磁盘、网络、软驱和USB驱动器,还可以在指定的驱动器类型中关闭自动播放功能 【破解声明】我是一只小小鸟!高手请飘过! ------------------------------------------------------------------------ 【破解过程】运行程序提示要注册,随便注册了,出现错误提示:\"Registration code is invalid!\" PEiD探壳:Borland Delphi 6.0 - 7.0 C32asm: 0046AC67MOV EDX,46ADA8\\->: Registration code is invalid! 0046AC43MOV EDX,46AD70\\->: Registration has been completed successfully!
根据反汇编结果在OD中下断点,载入程序运行,开始在这里: 0046DE7C > $55PUSH EBP 0046DE7D .8BECMOV EBP,ESP 0046DE7F .83C4 F0 ADD ESP,-10
F9运行,注册,我用的是123456,“OK”后断在此处: 0046AB17|.51PUSH ECX 0046AB18|.8945 FC MOV DWORD PTR SS:[EBP-4],EAX 0046AB1B|.33C0XOR EAX,EAX 0046AB1D|.55PUSH EBP 0046AB1E|.68 A8AC4600 PUSH disklock.0046ACA8 0046AB23|.64:FF30 PUSH DWORD PTR FS:[EAX] 0046AB26|.64:8920 MOV DWORD PTR FS:[EAX],ESP 0046AB29|.8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 0046AB2C|.8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0046AB2F|.8B80 AC030000 MOV EAX,DWORD PTR DS:[EAX+3AC] 0046AB35|.E8 2260FDFF CALL disklock.00440B5C 0046AB3A|.8B45 EC MOV EAX,DWORD PTR SS:[EBP-14];假码出现在堆栈和提示框中。 0046AB3D|.8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 0046AB40|.E8 EBB6FFFF CALL disklock.00466230 0046AB45|.8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] 0046AB48|.B8 884D4700 MOV EAX,disklock.00474D88 0046AB4D|.E8 EA9EF9FF CALL disklock.00404A3C 0046AB52|.E8 11FDFFFF CALL disklock.0046A868 ;算法对比中心,当然要跟进! 0046AB57|.8845 FB MOV BYTE PTR SS:[EBP-5],AL 0046AB5A|.807D FB 00CMP BYTE PTR SS:[EBP-5],0 0046AB5E|.0F84 F2000000 JE disklock.0046AC56 ;这里是关键跳,一跳就死! 0046AB64|.8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0046AB67|.C680 CC030000>MOV BYTE PTR DS:[EAX+3CC],1 0046AB6E|.8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 0046AB71|.50PUSH EAX 0046AB72|.8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] 0046AB75|.B8 C0AC4600 MOV EAX,disklock.0046ACC0;ASCII \"B9BB8C819888AB829FBA848389829ABE849788\" 0046AB7A|.E8 91BBFFFF CALL disklock.00466710 0046AB7F|.8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] 0046AB82|.50PUSH EAX 0046AB83|.8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] 0046AB86|.B8 F0AC4600 MOV EAX,disklock.0046ACF0;ASCII \"BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8\" 0046AB8B|.E8 D8FDFFFF CALL disklock.0046A968 0046AB90|.8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C] 0046AB93|.A1 844D4700 MOV EAX,DWORD PTR DS:[474D84] 0046AB98|.59POP ECX 0046AB99|.E8 2EBDFFFF CALL disklock.004668CC 0046AB9E|.8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20] 0046ABA1|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046ABA6|.E8 ADBAFFFF CALL disklock.00466658 0046ABAB|.8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] 0046ABAE|.50PUSH EAX 0046ABAF|.8D55 DC LEA EDX,DWORD PTR SS:[EBP-24] 0046ABB2|.B8 20AD4600 MOV EAX,disklock.0046AD20;ASCII \"BDBB8C819888AB829FBA848389829ABE849788\" 0046ABB7|.E8 54BBFFFF CALL disklock.00466710 0046ABBC|.8B45 DC MOV EAX,DWORD PTR SS:[EBP-24] 0046ABBF|.50PUSH EAX 0046ABC0|.8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28] 0046ABC3|.B8 F0AC4600 MOV EAX,disklock.0046ACF0;ASCII \"BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8\" 0046ABC8|.E8 9BFDFFFF CALL disklock.0046A968 0046ABCD|.8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28] 0046ABD0|.A1 844D4700 MOV EAX,DWORD PTR DS:[474D84] 0046ABD5|.59POP ECX 0046ABD6|.E8 95BDFFFF CALL disklock.00466970 0046ABDB|.837D F4 00CMP DWORD PTR SS:[EBP-C],0 0046ABDF|.75 44 JNZ SHORT disklock.0046AC25 0046ABE1|.E8 CEF9F9FF CALL disklock.0040A5B4 0046ABE6|.83C4 F4 ADD ESP,-0C 0046ABE9|.DB3C24FSTP TBYTE PTR SS:[ESP]; | 0046ABEC|.9BWAIT ; | 0046ABED|.8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]; | 0046ABF0|.E8 77F4F9FF CALL disklock.0040A06C ; \\disklock.0040A06C 0046ABF5|.8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C] 0046ABF8|.50PUSH EAX 0046ABF9|.8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30] 0046ABFC|.B8 C0AC4600 MOV EAX,disklock.0046ACC0;ASCII \"B9BB8C819888AB829FBA848389829ABE849788\" 0046AC01|.E8 0ABBFFFF CALL disklock.00466710 0046AC06|.8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30] 0046AC09|.50PUSH EAX 0046AC0A|.8D55 CC LEA EDX,DWORD PTR SS:[EBP-34] 0046AC0D|.B8 F0AC4600 MOV EAX,disklock.0046ACF0;ASCII \"BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8\" 0046AC12|.E8 51FDFFFF CALL disklock.0046A968 0046AC17|.8B55 CC MOV EDX,DWORD PTR SS:[EBP-34] 0046AC1A|.A1 844D4700 MOV EAX,DWORD PTR DS:[474D84] 0046AC1F|.59POP ECX 0046AC20|.E8 4BBDFFFF CALL disklock.00466970 0046AC25|>A1 A0F94600 MOV EAX,DWORD PTR DS:[46F9A0] 0046AC2A|.8B00MOV EAX,DWORD PTR DS:[EAX] 0046AC2C|.8B80 B0030000 MOV EAX,DWORD PTR DS:[EAX+3B0] 0046AC32|.BA 50AD4600 MOV EDX,disklock.0046AD50;ASCII \"Software (Ctrl+R)\" 0046AC37|.E8 2C7AFEFF CALL disklock.00452668 0046AC3C|.6A 40 PUSH 40 0046AC3E|.B9 64AD4600 MOV ECX,disklock.0046AD64;ASCII \"Information\" 0046AC43|.BA 70AD4600 MOV EDX,disklock.0046AD70;ASCII \"Registration has been completed successfully!\" 0046AC48|.A1 A0FB4600 MOV EAX,DWORD PTR DS:[46FBA0] 0046AC4D|.8B00MOV EAX,DWORD PTR DS:[EAX] 0046AC4F|.E8 0059FFFF CALL disklock.00460554 0046AC54|.EB 22 JMP SHORT disklock.0046AC78 0046AC56|>B8 884D4700 MOV EAX,disklock.00474D88 0046AC5B|.E8 889DF9FF CALL disklock.004049E8 0046AC60|.6A 10 PUSH 10 0046AC62|.B9 A0AD4600 MOV ECX,disklock.0046ADA0;ASCII \"Error\" 0046AC67|.BA A8AD4600 MOV EDX,disklock.0046ADA8;ASCII \"Registration code is invalid!\" 0046AC6C|.A1 A0FB4600 MOV EAX,DWORD PTR DS:[46FBA0] 0046AC71|.8B00MOV EAX,DWORD PTR DS:[EAX] 0046AC73|.E8 DC58FFFF CALL disklock.00460554 0046AC78|>33C0XOR EAX,EAX
CALL 0046A868跟进: 0046A868/$55PUSH EBP 0046A869|.8BECMOV EBP,ESP 0046A86B|.83C4 F0 ADD ESP,-10 0046A86E|.33C0XOR EAX,EAX 0046A870|.8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0046A873|.C645 FF 00MOV BYTE PTR SS:[EBP-1],0 0046A877|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A87C|.8945 F4 MOV DWORD PTR SS:[EBP-C],EAX 0046A87F|.8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 0046A882|.8945 F0 MOV DWORD PTR SS:[EBP-10],EAX 0046A885|.837D F0 00CMP DWORD PTR SS:[EBP-10],0 0046A889|.74 0B JE SHORT disklock.0046A896 0046A88B|.8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] 0046A88E|.83E8 04 SUB EAX,4 0046A891|.8B00MOV EAX,DWORD PTR DS:[EAX] ;取注册码的位数。 0046A893|.8945 F0 MOV DWORD PTR SS:[EBP-10],EAX 0046A896|>837D F0 0ECMP DWORD PTR SS:[EBP-10],0E ;看看注册码是不是14位,不是就跳走,不进行比较了。所以到这里只好重新来一次了,这一次用12345678901234来注册。 0046A89A|.0F85 85000000 JNZ disklock.0046A925
继续了: 0046A8A0|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A8A5|.8038 34 CMP BYTE PTR DS:[EAX],34 ;取注册码的第一位与34相比较。 0046A8A8|.0F94C0SETE AL;相等为真,AL=1,不相等为假,AL=0 0046A8AB|.83E0 7F AND EAX,7F 0046A8AE|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX ;将EAX的值加起来保存。 0046A8B1|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A8B6|.8078 02 36CMP BYTE PTR DS:[EAX+2],36 ;取注册码的第三位与36相比较。 0046A8BA|.0F94C0SETE AL 0046A8BD|.83E0 7F AND EAX,7F 0046A8C0|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX 0046A8C3|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A8C8|.8078 03 31CMP BYTE PTR DS:[EAX+3],31 ;取注册码的第四位与31相比较。 0046A8CC|.0F94C0SETE AL 0046A8CF|.83E0 7F AND EAX,7F 0046A8D2|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX 0046A8D5|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A8DA|.8078 04 32CMP BYTE PTR DS:[EAX+4],32 ;取注册码的第五位与32相比较。 0046A8DE|.0F94C0SETE AL 0046A8E1|.83E0 7F AND EAX,7F 0046A8E4|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX 0046A8E7|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A8EC|.8078 07 36CMP BYTE PTR DS:[EAX+7],36 ;取注册码的第八位与36相比较。 0046A8F0|.0F94C0SETE AL 0046A8F3|.83E0 7F AND EAX,7F 0046A8F6|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX 0046A8F9|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A8FE|.8078 08 36CMP BYTE PTR DS:[EAX+8],36 ;取注册码的第九位与36相比较。 0046A902|.0F94C0SETE AL 0046A905|.83E0 7F AND EAX,7F 0046A908|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX 0046A90B|.A1 884D4700 MOV EAX,DWORD PTR DS:[474D88] 0046A910|.8078 0A 37CMP BYTE PTR DS:[EAX+A],37 ;取注册码的第十一位与37相比较。 0046A914|.0F94C0SETE AL 0046A917|.83E0 7F AND EAX,7F 0046A91A|.0145 F8 ADD DWORD PTR SS:[EBP-8],EAX 0046A91D|.837D F8 07CMP DWORD PTR SS:[EBP-8],7 ;最后将EAX的总计与7比较,不相等就没有注册成功。 0046A921|.0F9445 FF SETE BYTE PTR SS:[EBP-1] 0046A925|>8A45 FF MOV AL,BYTE PTR SS:[EBP-1] 0046A928|.8BE5MOV ESP,EBP 0046A92A|.5DPOP EBP 0046A92B\\.C3RETN
------------------------------------------------------------------------ 【破解总结】注册方法很简单: 取注册码的第1、3、4、5、8、9、11位的ASC码分别与34、36、31、32、36、36、37相比较,全部相等就注册成功,其他位的数字没有特殊要求。
|
|