两种方式破解VBA加密代码

第一种:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

Sub VBAPassword1() '你要解保护的Excel文件路径

    Filename = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlt),*.xls;*.xla;*.xlt", , "VBA破解")

    If Dir(Filename) = "" Then

        MsgBox "没找到相关文件,清重新设置。"

        Exit Sub

    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 Sub

    End If

    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, "提示"

    Close #1

End Sub

第二种:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

Option Explicit

    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Long, Source As Long, ByVal Length As Long)

    Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Long, ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long

    Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long

    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

    Private Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As Long, ByVal pTemplateName As Long, ByVal hWndParent As Long, ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer

    Dim HookBytes(0 To 5) As Byte

    Dim OriginBytes(0 To 5) As Byte

    Dim pFunc As Long

    Dim Flag As Boolean

Private Function GetPtr(ByVal Value As Long) As Long

    GetPtr = Value

End Function

Public Sub RecoverBytes()

    If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6

End Sub

Public Function Hook() As Boolean

    Dim TmpBytes(0 To 5) As Byte

    Dim p As Long

    Dim OriginProtect As Long

    Hook = False

    pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")

    If VirtualProtect(ByVal pFunc, 6, &H40, OriginProtect) <> 0 Then

        MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6

        If TmpBytes(0) <> &H68 Then

            MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6

            p = GetPtr(AddressOf MyDialogBoxParam)

            HookBytes(0) = &H68

            MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4

            HookBytes(5) = &HC3

            MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6

            Flag = True

            Hook = True

        End If

    End If

End Function

Private Function MyDialogBoxParam(ByVal hInstance As Long, _

ByVal pTemplateName As Long, ByVal hWndParent As Long, _

ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer

    If pTemplateName = 4070 Then

        MyDialogBoxParam = 1

    Else

        RecoverBytes

        MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, hWndParent, lpDialogFunc, dwInitParam)

        Hook

    End If

End Function

Sub Crack()

    If Hook Then MsgBox "破解成功"

End Sub

VBA工程加密PJ方式(两种)相关推荐

  1. 地形图加密高程点的两种方法CAD和ARCGIS

    地形图加密高程点的两种方法CAD和ARCGIS 1.      CAD中步骤如下 1)  在cad中加载高程点数据信息,然后"工程应用"-"高程点生成数据文件" ...

  2. 在两个高程点之间如何生成加密点_地形图加密高程点的两种方法CAD和ARCGIS

    地形图加密高程点的两种方法CAD和ARCGIS 1.      CAD中步骤如下 1)  在cad中加载高程点数据信息,然后"工程应用"-"高程点生成数据文件" ...

  3. tortoisegit 代码的回滚方式 --两种

    TortoiseGit有两种回滚代码方式, 一种是导出指定版本代码为zip格式,不影响源代码:另一种是直接在源代码上回滚, 指定版本之后写的代码都会被删除.下面分别介绍这两种方法: 首先进入版本日志对 ...

  4. VBA工程加密,工程不可查看加密

    1.使用方法 ​ 选择文件,选择工程不可查看 ​ 2.结果 下载地址: 关注公众号<软设开发>领取更多实用工具,回复关键字:工程加密 原文链接

  5. springboot日志的实现方式(两种log4j2.properties和log4j2.yml)

    第一种:基于log4j2.properties 首先pom.xml中导入jar <dependency><groupId>org.slf4j</groupId>&l ...

  6. 计算机进去bios方式,两种使用的电脑进入BIOS方法

    对于装机人员来说,进入BIOS那是经常的事.可是在面对众多的不同品牌,不同型号的的电脑.笔记本.一体机时要想全部记下可能不是很容易,为此,小编经过总结了一些进入BIOS的方法,只要有此方法,那么以后进 ...

  7. ios java aes128_iOS AES128加密解密的两种模式(CBC和ECB)

    原理什么的不在本篇的范畴,网上很多大牛总结的很好了 请参考AES加密过程详解 1. 苹果默认是CBC模式的,有文档为证: /*! @enum CCOptions @abstract Options f ...

  8. 转轮机加密详解两种解题方法 -攻防世界

    从19世纪20年代,人们开始发明各种机械加密设备对数据进行加密处理,最为著名的是转轮机和转轮加密算法,转轮密码机在二战期间使用极为广泛. 转轮密码机是由一个输入键盘和一组转轮组成,每个转轮上标有有26 ...

  9. js 图片转base64的方式(两种)

    方式一:Blob和FileReader 对象 实现原理: 使用xhr请求图片,并设置返回的文件类型为Blob对象[xhr.responseType = "blob"] 使用File ...

最新文章

  1. 代数系统思维导图_线性代数思维导图专题
  2. 超级有意思的代码注释
  3. 唔姆(二次元高清图片收藏)
  4. php 手机屏幕,90hz和60hz手机屏幕差别大吗
  5. php bootstrap 分页 查询,深入了解Bootstrap table表格插件(二)前后端分页模糊查询...
  6. 当过爱因斯坦助理,参加过曼哈顿计划,他还发明受欢迎的编程语言 | 人物志...
  7. PyQt5 UI设计时自动创建qrc文件
  8. 虚拟机14.00和CentOS7安装全部过程(百度网盘安装包)
  9. C语言全局变量重复定义检查-fno-common
  10. 浅谈网页压缩GZIP
  11. 【论文简述及翻译】RAFT: Recurrent All-Pairs Field Transforms for Optical Flow(ECCV 2020)
  12. 搜索框 放大镜图标处理
  13. X上面有一道横线,怎么打出来?
  14. 通过运营界面上传图片失败,浏览器提示上传文件时发生HTTP错误(错误代码:500)
  15. 如何在windows上安装虚拟机
  16. 我就是那个错过了乔布斯的变态老码农
  17. mysql vchar 最大长度_mysql VARCHAR的最大长度到底是多少
  18. 抓adg端口防封最详细教程(已更新)
  19. 开源好物分享!文档在线预览平台
  20. catalog 与 category 的区别

热门文章

  1. echarts 不显示x轴与y轴 及 x 、y 轴样式自定义
  2. 用通道法抠出外国MM的头发 - PS通道抠图教程
  3. Contiki学习平台推荐
  4. 键盘分类 红黑青茶轴
  5. 邮件英语最常用的100个句型
  6. 自己搭深度学习环境踩坑血泪史
  7. 神龙版 (官方网站 下载)
  8. google的新闻(文章)分类算法
  9. iconfont的使用,阿里矢量图库的引用,配置,改变图标大小和图标颜色
  10. “干爹”这事是怎么在北美洗白白的