




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EXCEL vba工程密码破解这种方法实际是避开VBA工程密码验证,即,骗vba编辑器,该密码输入成功,请求放行。原理不多说了,先将方法公布:=1.新建一个工作簿,打开,按ALT+F11,进入vba代码编辑器窗口:2.新建一个模块,“插入”-“模块”把以下代码复制进模块并保存-Option ExplicitPrivate Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Long, Source
2、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
3、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&q
4、uot; 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
5、 ByteDim OriginBytes(0 To 5) As ByteDim pFunc As LongDim Flag As BooleanPrivate Function GetPtr(ByVal Value As Long) As Long '获得函数的地址 GetPtr = ValueEnd FunctionPublic Sub RecoverBytes() '若已经hook,则恢复原API开头的6字节,也就是恢复原来函数的功能 If Flag Then MoveM
6、emory ByVal pFunc, ByVal VarPtr(OriginBytes(0), 6End SubPublic Function Hook() As Boolean Dim TmpBytes(0 To 5) As Byte Dim p As Long Dim OriginProtect As Long Hook = False 'VBE6.dll调用DialogBoxParamA显示VB6IN
7、TL.dll资源中的第4070号对话框(就是输入密码的窗口) '若DialogBoxParamA返回值非0,则VBE会认为密码正确,所以我们要hook DialogBoxParamA函数 pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA") '标准api hook过程之一: 修改内存属性,使其可写 If Virtual
8、Protect(ByVal pFunc, 6, &H40, OriginProtect) <> 0 Then '标准api hook过程之二: 判断是否已经hook,看看API的第一个字节是否为&H68, '若是则说明已经Hook MoveMemory ByVal VarPtr(TmpBytes(0), ByVal pFunc, 6 If
9、 TmpBytes(0) <> &H68 Then '标准api hook过程之三: 保存原函数开头字节,这里是6个字节,以备后面恢复 MoveMemory ByVal VarPtr(OriginBytes(0), ByVal pFunc, 6 '用AddressOf获取MyDialogBoxParam的地址
10、0; '因为语法不允许写成p = AddressOf MyDialogBoxParam,这里我们写一个函数 'GetPtr,作用仅仅是返回AddressOf MyDialogBoxParam的值,从而实现将 'MyDialogBoxParam的地址付给p的目的
11、 p = GetPtr(AddressOf MyDialogBoxParam) '标准api hook过程之四: 组装API入口的新代码 'HookBytes 组成如下汇编 'push MyDialogBoxParam的地址
12、 'ret '作用是跳转到MyDialogBoxParam函数 HookBytes(0) = &H68 MoveMemory ByVal VarPtr(HookBytes(1), ByVal VarPtr(p), 4 &
13、#160; HookBytes(5) = &HC3 '标准api hook过程之五: 用HookBytes的内容改写API前6个字节 MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0), 6
14、160; '设置hook成功标志 Flag = True Hook = True End If End IfEnd FunctionPrivate Function MyDialogBoxParam(ByVal hInstance As Long, _ ByVal pTempla
15、teName As Long, ByVal hWndParent As Long, _ ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer If pTemplateName = 4070 Then '有程序调用DialogBoxParamA装入4070号对话框,这里我们直接返回1,让 'VBE以为密码正确了
16、0; MyDialogBoxParam = 1 Else '有程序调用DialogBoxParamA,但装入的不是4070号对话框,这里我们调用 'RecoverBytes函数恢复原来函数的功能,在进行原来的函数 RecoverBytes MyDialogBoxParam = DialogBoxPa
17、ram(hInstance, pTemplateName, _ hWndParent, lpDialogFunc, dwInitParam) '原来的函数执行完毕,再次hook Hook End IfEnd Function-3.右击sheet1工作表,“查看代码”复制以下代码进去并保存:-sub 破解()if hook thenmsgbox "破解成功"end ifend subsub 恢复()RecoverBytesmsgbox "恢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变电所电气施工合同范例
- 医院供应室合同范例
- 代买合同范例
- 公司股转让合同范例5篇
- 公司股购买合同范例
- 买车防坑合同范例
- 南京婚庆酒店合同范例
- 南瓜养殖合同范例
- 上汽大众汽车经销合同范例
- 单位房产赠与子女合同范例
- 专题强化七 圆周运动的临界问题
- 施工应急预案及安全防控措施
- 个人兼职合同格式大全
- 2024年中国新经济企业top500发展报告
- 脑梗塞取栓护理
- 课题开题报告:教育数字化促进乡村教育资源均衡配置研究
- 虚拟实验技术发展-深度研究
- 5.1《水经注》序课时练-【中职专用】高二语文同步(高教版2023拓展模块下册)
- 2025年中央一号文件高频重点考试题库150题(含答案解析)
- 2024江苏盐城市交通投资建设控股集团有限公司招聘笔试参考题库附带答案详解
- 2025年吉林电子信息职业技术学院单招职业技能测试题库及答案一套
评论
0/150
提交评论