yh6201 发表于 2009-6-3 10:29:20

excel+vba 软件破解方法总结 通用方法

所有excel+宏 软件

【保护方式】:注册码+功能限制

【编译语言】:Excel+宏

【调试环境及软件】:WinXP、Microsoft Office、Winhex

【破解日期】:2009-05-25

【破解目的】:研究Excel+vba破解和学习excel中宏编辑

【破文作者】:yh6201(也就是我本人杨chao)

【作者邮箱】:[email protected]

破解思路: 使用软件的出错处理机制拿到软件的内部代码。


第一步:首先把软件(一般这类软件都是编译好的xlt模板文件)修改成.xla文件 ,
第二步,用excel vba宏解密文件软件(网上做好的多得是,附件中有)
Sub MoveProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
   Exit Sub
Else
   VBAPassword FileName, False
End If
End Sub

'设置VBA编码保护
Sub SetProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
   Exit Sub
Else
   VBAPassword FileName, True
End If
End Sub

Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
    If Dir(FileName) = "" Then
       Exit Function
    Else
       FileCopy FileName, FileName & ".bak"
    End If

    Dim GetData As String * 5
    Open FileName For Binary As #1
    Dim CMGs As Long
    Dim DPBo As Long
    For i = 1 To LOF(1)
      Get #1, i, GetData
      If GetData = "CMG=""" Then CMGs = i
      If GetData = "[Host" Then DPBo = i - 2: Exit For
    Next
   
    If CMGs = 0 Then
       MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
       Exit Function
    End If
   
    If Protect = False Then
       Dim St As String * 2
       Dim s20 As String * 1
      
       '取得一个0D0A十六进制字串
       Get #1, CMGs - 2, St
   
       '取得一个20十六制字串
       Get #1, DPBo + 16, s20
   
       '替换加密部份机码
       For i = CMGs To DPBo Step 2
         Put #1, i, St
       Next
      
       '加入不配对符号
       If (DPBo - CMGs) Mod 2 <> 0 Then
          Put #1, DPBo + 1, s20
       End If
       MsgBox "文件解密成功......", 32, "提示"
    Else
       Dim MMs As String * 5
       MMs = "DPB="""
       Put #1, CMGs, MMs
       MsgBox "对文件特殊加密成功......", 32, "提示"
    End If
    Close #1
End Function

Private Sub CommandButton1_Click()
MoveProtect
End Sub

Private Sub CommandButton2_Click()
SetProtect
End Sub
给文件解密vba保护, 呵呵进入最后一步
这里直接给出做好的xls文件



第三步:用winhex 类软件打开程序文件wenjian.xla搜索有判断的代码,例如搜索if、<>、>、< 等等判断符号,然后修改期后面的计算公式,
例如:
把下面代码位置修改成(红色标记位置修改)

0002C110   75 6D 8A 6E 00 7F 31 1611 52 6F 77 83 0F 21 8A   um妌.1..Row?!?
0002C120   5C D7 A2 B2 E1 8F 90 4966 00 20 43 65 6C 6C 73   \注册彁If. Cells
0002C130   28 31 00 30 2C 20 33 2920 3C 3E 10 20 33 32 31   (1.0, 3) <>. 321
0002C140   01 00 20 54 68 04 65 6E83 31 4F 6E 20 45 72 00   .. Th.en?On Er.
0002C150   72 6F 72 20 47 6F 54 6F88 20 78 78 83 0A 6A 71   ror GoTo?xx?jq



修改成这样

0002C110   75 6D 8A 6E 00 7F 31 1611 52 6F 77 83 0F 21 8A   um妌.1..Row?!?
0002C120   5C D7 A2 B2 E1 8F 90 4966 00 20 43 65 6C 6C 73   \注册彁If. Cells
0002C130   28 31 00 30 2C 20 33 2920 3C 3E 10 00 00 00 00   (1.0, 3) <>.....
0002C140   00 00 20 54 68 04 65 6E83 31 4F 6E 20 45 72 00   .. Th.en?On Er.
0002C150   72 6F 72 20 47 6F 54 6F88 20 78 78 83 0A 6A 71   ror GoTo?xx?jq

这里要选择一处自己知道在软件中操作什么会触发这里的错误的判断语句进行修改,
最后打开经过修改的软件,选择你修改的部分触发错误,软件就会自动爆出来vba源码,看到源码了,自己修改吧。


By:yh6201

原创,转载请声明!!!!

[ 本帖最后由 yh6201 于 2009-6-3 10:31 编辑 ]

beijingren 发表于 2009-6-8 12:29:14

方法真的很好,谢谢了!

老万 发表于 2009-6-8 13:05:18

学习了,谢谢楼主分享。

忆乘风 发表于 2009-6-8 17:51:30

jjccaa 发表于 2009-6-8 21:26:25

感谢楼主分享!!

kkr 发表于 2009-6-10 17:55:56

方法真的很好,谢谢

cjteam 发表于 2009-6-13 18:29:53

/:014 没见过,有时间试

geii 发表于 2009-6-13 23:55:41

太高明了

百佳 发表于 2010-4-28 20:01:12

来,支持一下,顶起来,大家一起来!!!!!!!!!!!!!!!!!!!!!

suave 发表于 2010-5-13 16:46:27

进来看一下群众们的分析,大家好!
页: [1] 2
查看完整版本: excel+vba 软件破解方法总结 通用方法