2015-04-06 2 views
1

Я задаюсь вопросом о том, насколько безопасно это пароль VBA в MS Office 2013.MS Office 2013 - VBA пароль безопасности

Я искал в Интернете, и есть куча сайтов, продающих программное обеспечение, чтобы сделать это, является надежным ?

Я хочу создать некоторую безопасность вокруг своих офисных файлов, которые будут зависеть от кода VBA внутри, но если код vba внутри можно легко изменить/увидеть, это не так.

Благодаря

+0

Это зависит. Насколько вы ожидаете от своего нападающего? Вы найдете это интересным. http://superuser.com/q/807926/361752 – RubberDuck

+0

Я хочу знать, легко ли это сделать, это мой вопрос. Спасибо –

+0

Ну, взгляните на эту ссылку и скажите мне, насколько это просто? =;) - – RubberDuck

ответ

3

Используя этот ответ в качестве ссылки: Is there a way to crack the password on an Excel VBA Project?

Вместо того чтобы делать все шестигранные питания. Вы можете попробовать это. Он будет работать для любых файлов (* .xls, * .xlsm, * .xlam ...). Протестировано и работает в Excel 2007, Excel 2010 и Excel 2013 - 32-разрядная версия.

  1. Открыть файл (ы), которые содержат заблокированного VBA Проекты
  2. Создать новый файл XLSM и хранить этот код в Module1

    Option Explicit 
    
    Private Const PAGE_EXECUTE_READWRITE = &H40 
    
    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, PAGE_EXECUTE_READWRITE, 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 
    
  3. Вставьте этот код в Module2 и запустить его

    Sub unprotected() 
        If Hook Then 
         MsgBox "VBA Project is unprotected!", vbInformation, "*****" 
        End If 
    End Sub 
    
  4. Вернитесь к своим проектам VBA и наслаждайтесь.

P/S: Этот код зачисляется на Siwtom (ник), разработчик vietnamese. Вы можете включить этот код в дополнение Excel для частого использования.