论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 2248阅读
  • 0回复

[安全相关]Disk Drive Security 3.11破解分析 [复制链接]

上一主题 下一主题
离线frontside
 
发帖
*
今日发帖
最后登录
1970-01-01
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-07-03 21:58:29
— 本帖被 惊鸿一剑 从 『应用技术交流』 移动到本区(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相比较,全部相等就注册成功,其他位的数字没有特殊要求。
软件下载咨询 sdbeta@qq.com