博客 |蓝易论坛 |加入收藏 | 设为首页 | RSS
您当前的位置:首页 > 系统与文件 > 破解与汉化

[破解实例]Easy Disk Drive Safeguard破解

时间:2010-04-04 18:28:26  来源:  作者:

【文章作者】: BeyondMe
【作者邮箱】: futuring@126.com
【作者主页】: http://hi.baidu.com/beyond0769
【软件名称】: Easy Disk Drive Safeguard 3.3
【下载地址】: http://www.softheap.com/
【加壳方式】: 无
【编写语言】: Delphi

Easy Disk Drive Safeguard

【详细过程】
好久没有玩算法,今天下载了一个小软件Easy Disk Drive Safeguard,准备分析一下,结果发现是软柿子一个。 只能说今年运气好哇,后来更惊喜的是,软柿子不只一个,Easy Disk Drive Safeguard的主页所有的软件几乎都是一个算法, 而且是专业为我们菜鸟准备的,^_^

Delphi编写的,OD载入运行,输入假码出现错误提示,bp MessageBoxA 下载成功,alt+F9返回到程序领空,跳出来主算法过程如下:


0046AB08 /$ 55            PUSH EBP                          ; 主算法过程
0046AB09 |. 8BEC          MOV EBP,ESP
0046AB0B |. B9 06000000   MOV ECX,6
0046AB10 |> 6A 00         /PUSH 0
0046AB12 |. 6A 00         |PUSH 0
0046AB14 |. 49            |DEC ECX
0046AB15 |.^ 75 F9         \JNZ SHORT disklock.0046AB10
0046AB17 |. 51            PUSH ECX
0046AB18 |. 8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
0046AB1B |. 33C0          XOR EAX,EAX
0046AB1D |. 55            PUSH 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        ; AL保存函数返回值
0046AB5A |. 807D FB 00    CMP BYTE PTR SS:[EBP-5],0         ; 如果AL=0则注册失败,=1注册成功
0046AB5E |. 0F84 F2000000 JE disklock.0046AC56              ; 不能跳
0046AB64 |. 8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]

……省略N行代码……

0046AC20 |. E8 4BBDFFFF   CALL disklock.00466970
0046AC25 |> A1 A0F94600   MOV EAX,DWORD PTR DS:[46F9A0]
0046AC2A |. 8B00          MOV 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 |. 8B00          MOV 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 |. 8B00          MOV EAX,DWORD PTR DS:[EAX]
0046AC73 |. E8 DC58FFFF   CALL disklock.00460554
0046AC78 |> 33C0          XOR EAX,EAX
0046AC7A |. 5A            POP EDX
0046AC7B |. 59            POP ECX
0046AC7C |. 59            POP ECX
0046AC7D |. 64:8910       MOV DWORD PTR FS:[EAX],EDX
0046AC80 |. 68 AFAC4600   PUSH disklock.0046ACAF
0046AC85 |> 8D45 CC       LEA EAX,DWORD PTR SS:[EBP-34]
0046AC88 |. BA 08000000   MOV EDX,8
0046AC8D |. E8 7A9DF9FF   CALL disklock.00404A0C
0046AC92 |. 8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
0046AC95 |. E8 4E9DF9FF   CALL disklock.004049E8
0046AC9A |. 8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0046AC9D |. BA 02000000   MOV EDX,2
0046ACA2 |. E8 659DF9FF   CALL disklock.00404A0C
0046ACA7 \. C3            RETN


=================
以上过程不必作过多解释,关键CALL在
0046AB52 |. E8 11FDFFFF   CALL disklock.0046A868            ; 关键算法函数
只要这个函数返回1,则注册成功。F7进入看看。


0046A868 /$ 55            PUSH EBP                                 ; 关键算法
0046A869 |. 8BEC          MOV EBP,ESP
0046A86B |. 83C4 F0       ADD ESP,-10
0046A86E |. 33C0          XOR EAX,EAX
0046A870 |. 8945 F8       MOV DWORD PTR SS:[EBP-8],EAX             ; [EBP-8] = 0,记为N
0046A873 |. C645 FF 00    MOV 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 00    CMP 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 |. 8B00          MOV EAX,DWORD PTR DS:[EAX]               ; EAX=假码长度
0046A893 |. 8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
0046A896 |> 837D F0 0E    CMP DWORD PTR SS:[EBP-10],0E             ; 等于14吗?
0046A89A |. 0F85 85000000 JNZ disklock.0046A925                    ; 不相等OVER
0046A8A0 |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A8A5 |. 8038 34       CMP BYTE PTR DS:[EAX],34                 ; 第一位和‘4’比较,相等则AL=1
0046A8A8 |. 0F94C0        SETE AL
0046A8AB |. 83E0 7F       AND EAX,7F                               ; EAX = EAX and $7F
0046A8AE |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A8B1 |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A8B6 |. 8078 02 36    CMP BYTE PTR DS:[EAX+2],36               ; 第三位和‘6’比较,相等则AL=1
0046A8BA |. 0F94C0        SETE AL
0046A8BD |. 83E0 7F       AND EAX,7F                               ; EAX = EAX and $7F
0046A8C0 |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A8C3 |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A8C8 |. 8078 03 31    CMP BYTE PTR DS:[EAX+3],31               ; 第四位和‘1’比较,相等则AL=1
0046A8CC |. 0F94C0        SETE AL
0046A8CF |. 83E0 7F       AND EAX,7F
0046A8D2 |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A8D5 |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A8DA |. 8078 04 32    CMP BYTE PTR DS:[EAX+4],32               ; 第五位和‘2’比较,相等则AL=1
0046A8DE |. 0F94C0        SETE AL
0046A8E1 |. 83E0 7F       AND EAX,7F
0046A8E4 |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A8E7 |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A8EC |. 8078 07 36    CMP BYTE PTR DS:[EAX+7],36               ; 第八位和‘6’比较,相等则AL=1
0046A8F0 |. 0F94C0        SETE AL
0046A8F3 |. 83E0 7F       AND EAX,7F
0046A8F6 |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A8F9 |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A8FE |. 8078 08 36    CMP BYTE PTR DS:[EAX+8],36               ; 第九位和‘6’比较,相等则AL=1
0046A902 |. 0F94C0        SETE AL
0046A905 |. 83E0 7F       AND EAX,7F
0046A908 |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A90B |. A1 884D4700   MOV EAX,DWORD PTR DS:[474D88]            ; [474D88]指向假码地址
0046A910 |. 8078 0A 37    CMP BYTE PTR DS:[EAX+A],37               ; 第11位和‘7’比较,相等则AL=1
0046A914 |. 0F94C0        SETE AL
0046A917 |. 83E0 7F       AND EAX,7F
0046A91A |. 0145 F8       ADD DWORD PTR SS:[EBP-8],EAX             ; EAX累加到 N 中
0046A91D |. 837D F8 07    CMP DWORD PTR SS:[EBP-8],7               ; 最后N=7则AL = 1,表示注册成功
0046A921 |. 0F9445 FF     SETE BYTE PTR SS:[EBP-1]
0046A925 |> 8A45 FF       MOV AL,BYTE PTR SS:[EBP-1]
0046A928 |. 8BE5          MOV ESP,EBP
0046A92A |. 5D            POP EBP
0046A92B \. C3            RETN


算法过程:
1、注册码长度为 $0E
2、第一位和‘4’;第三位和‘6’;第四位和‘1’;第五位和‘2’;
     第八位和‘6’;第九位和‘6’;第11位和‘7’;
满足以上七位即可,其它位随你乱来,于是试一下注册码:40612006607000
注册成功!
至于注册码保存到哪里,留待菜鸟们去摸索吧,否则想再调试一下就找不到注册框啦。

如今这个年代还能找到这样的算法,还真稀罕,也只有老外才有这样的作品了。无言

--------------------------------------------------------------------------------
【版权声明】: 本文原创于http://www.unpack.cn, 转载请注明作者并保持文章的完整, 谢谢!

来顶一下
近回首页
返回首页
下一篇:下面没有链接了 上一篇: 怎样成为一位黑客

正在载入评论数据中...
用户名: 验证码: 游客请勾选
         
分类
  • 系统相关
  • 文件处理
  • 电子书制作
  • 记事本工具
  • 破解与汉化
  • 推荐资讯
    栏目更新
    栏目热门