我自己找到一个office的VBA加密方法,然后再去找一个方法来破解密码,好像有点自相矛盾啊。

如果excel文件是xls或xlm格式(如果不是请转化成此种方法),则可使用以下代码:

  1. '移除VBA编码保护
  2. Sub MoveProtect()
  3. Dim FileName As String
  4. FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlsx & *.xlsm),*.xls;*.xla ;*.xlsx ; *.xlsm", , "VBA破解")
  5. If FileName = CStr(False) Then
  6. Exit Sub
  7. Else
  8. VBAPassword FileName, False
  9. End If
  10. End Sub
  11. '设置VBA编码保护
  12. Sub SetProtect()
  13. Dim FileName As String
  14. FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlsx & *.xlsm),*.xls;*.xla ;*.xlsx ; *.xlsm", , "VBA破解")
  15. If FileName = CStr(False) Then
  16. Exit Sub
  17. Else
  18. VBAPassword FileName, True
  19. End If
  20. End Sub
  21. Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
  22. If Dir(FileName) = "" Then
  23. Exit Function
  24. Else
  25. FileCopy FileName, FileName & ".bak"
  26. End If
  27.  
  28. Dim GetData As String * 5
  29. Open FileName For Binary As #1
  30. Dim CMGs As Long
  31. Dim DPBo As Long
  32. For i = 1 To LOF(1)
  33. Get #1, i, GetData
  34. If GetData = "CMG=""" Then CMGs = i
  35. If GetData = "[Host" Then DPBo = i - 2: Exit For
  36. Next
  37.  
  38. If CMGs = 0 Then
  39. MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
  40. Exit Function
  41. End If
  42.  
  43. If Protect = False Then
  44. Dim St As String * 2
  45. Dim s20 As String * 1
  46.  
  47. '取得一个0D0A十六进制字串
  48. Get #1, CMGs - 2, St
  49.  
  50. '取得一个20十六制字串
  51. Get #1, DPBo + 16, s20
  52.  
  53. '替换加密部份机码
  54. For i = CMGs To DPBo Step 2
  55. Put #1, i, St
  56. Next
  57.  
  58. '加入不配对符号
  59. If (DPBo - CMGs) Mod 2 <> 0 Then
  60. Put #1, DPBo + 1, s20
  61. End If
  62. MsgBox "文件解密成功......", 32, "提示"
  63. Else
  64. Dim MMs As String * 5
  65. MMs = "DPB="""
  66. Put #1, CMGs, MMs
  67. MsgBox "对文件特殊加密成功......", 32, "提示"
  68. End If
  69. Close #1
  70. End Function

最新文章

  1. html/css小练习2
  2. XML CDATA的作用
  3. 机器学习 —— 概率图模型(学习:CRF与MRF)
  4. WebApp之 apple-touch-icon
  5. iOS containsString与rangeOfString
  6. werkzeug源码阅读笔记(二) 上
  7. SqlHelp
  8. 开篇有益-解析微软微服务架构eShopOnContainers(一)
  9. JavaScript的DOM编程--07--节点的属性
  10. 如何理解opencv, python-opencv 和 libopencv?
  11. 使用python函数持续监控电脑cpu使用率、内存、c盘使用率等
  12. Itellj Idea使用技巧
  13. 转载:QT QTableView用法小结
  14. DP---(POJ1159 POJ1458 POJ1141)
  15. tensorflow 教程 文本分类 IMDB电影评论
  16. ffmpeg测试程序
  17. 百度Ueditor编辑器取消多图上传对话框中的图片搜索
  18. leetcode 188-maxProfit
  19. 在windows下远程访问linux服务器
  20. Delphi使用android的NDK是通过JNI接口,封装好了,不用自己写本地代码,直接调用

热门文章

  1. hdu 4452 Running Rabbits 模拟
  2. MYSQL-5.5.37-win32.msi 这个版本得程序包谁有吗 可以给我一下吗?
  3. SPOJ 3267. D-query (主席树,查询区间有多少个不相同的数)
  4. socket缓冲区以及阻塞模式
  5. mt7620 wireless驱动特性意外发现
  6. HDU 2604 Queuing 矩阵高速幂
  7. “System.InvalidOperationException”类型的未经处理的异常在 ESRI.ArcGIS.AxControls.dll 中发生
  8. envi几何校正
  9. 使用静态库的一些问题 -all_load
  10. ExtJS BorderLayout