所有excel+宏 软件

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

【编译语言】:Excel+宏

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

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

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

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

【作者邮箱】:yh6201@163.com

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


第一步:首先把软件(一般这类软件都是编译好的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 16  11 52 6F 77 83 0F 21 8A   um.1..Row?!?
0002C120   5C D7 A2 B2 E1 8F 90 49  66 00 20 43 65 6C 6C 73   \注册If. Cells
0002C130   28 31 00 30 2C 20 33 29  20 3C 3E 10 20 33 32 31   (1.0, 3) <>. 321
0002C140   01 00 20 54 68 04 65 6E  83 31 4F 6E 20 45 72 00   .. Th.en?On Er.
0002C150   72 6F 72 20 47 6F 54 6F  88 20 78 78 83 0A 6A 71   ror GoTo?xx?jq



修改成这样

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

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


By:yh6201

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

上传的附件 excel宏的破解.rar