VBA工程加密PJ方式(兩種)
兩種方式破解VBA加密代碼
第一種:
Sub VBAPassword1() '你要解保護(hù)的Excel文件路徑 Filename = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlt),*.xls;*.xla;*.xlt", , "VBA破解") If Dir(Filename) = "" Then MsgBox "沒找到相關(guān)文件,清重新設(shè)置。" 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 "請(qǐng)先對(duì)VBA編碼設(shè)置一個(gè)保護(hù)密碼...", 32, "提示" Exit Sub End If Dim St As String * 2 Dim s20 As String * 1 '取得一個(gè)0D0A十六進(jìn)制字串 Get #1, CMGs - 2, St '取得一個(gè)20十六制字串 Get #1, DPBo + 16, s20 '替換加密部份機(jī)碼 For i = CMGs To DPBo Step 2 Put #1, i, St Next '加入不配對(duì)符號(hào) If (DPBo - CMGs) Mod 2 <> 0 Then Put #1, DPBo + 1, s20 End If MsgBox "文件解密成功......", 32, "提示" Close #1 End Sub
第二種:
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
本文來自博客園,作者:張翰博,轉(zhuǎn)載請(qǐng)注明原文鏈接:https://www.cnblogs.com/vbashuo/p/15638693.html
到此這篇關(guān)于兩種方式破解VBA工程加密的文章就介紹到這了,更多相關(guān)VBA工程加密破解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于vba代碼運(yùn)行時(shí)錯(cuò)誤1004?應(yīng)用程序定義或?qū)ο蠖x錯(cuò)誤問題
這篇文章主要介紹了vba代碼運(yùn)行時(shí)錯(cuò)誤1004?應(yīng)用程序定義或?qū)ο蠖x錯(cuò)誤,經(jīng)過一系列問題調(diào)查發(fā)現(xiàn)是工作表中數(shù)據(jù)存在異常,需要的朋友可以參考下2022-10-10Excel·VBA合并工作簿的實(shí)現(xiàn)示例
本文主要介紹了Excel·VBA合并工作簿的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01VBA數(shù)組去重(字典去重多種方法+數(shù)組去重2種方法)
本文主要介紹了VBA數(shù)組去重(字典去重多種方法+數(shù)組去重2種方法),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08當(dāng)編輯框內(nèi)容改變 對(duì)應(yīng)的單元格也隨著改變vba代碼
當(dāng)編輯框內(nèi)容改變 對(duì)應(yīng)的單元格也隨著改變vba代碼2009-07-07向數(shù)據(jù)報(bào)表添加一個(gè)合計(jì)字段
在數(shù)據(jù)環(huán)境設(shè)計(jì)器中也可以創(chuàng)建一個(gè)合計(jì)字段,即對(duì)來自部分的數(shù)據(jù)進(jìn)行合計(jì)的字段。2009-07-07VBA處理數(shù)據(jù)與Python Pandas處理數(shù)據(jù)案例比較分析
這篇文章主要介紹了VBA處理數(shù)據(jù)與Python Pandas處理數(shù)據(jù)案例比較,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04