|
laoau138 发表于 2016-9-5 17:17
有更好的办法,搞定密码,有谁想知道
你所谓的更好的办法,就是绕过密码验证对吧~- 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
复制代码 |
|