| 
 | 
 
 
发表于 2015-1-11 14:37:59
|
显示全部楼层
 
 
 
这是在网上找得一个取模块基址的模块...... 
 
- Attribute VB_Name = "得到模块基址"
 
 - 'Text1 = GetModuleAdd(5788, "xxxx.dll")
 
 - '要>0就是正常加载了.
 
  
 
 
- Option Explicit
 
 - Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
 
 - Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
 
 - Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
 
 - Private Declare Function Module32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As MODULEENTRY32) As Long
 
 - Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As MODULEENTRY32) As Long
 
 - Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
 
 - Private Declare Function NtUnmapViewOfSection Lib "NTDLL.dll" (ByVal ProcessHandle As Long, ByVal BaseAddress As Long) As Long
 
 - Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
 - Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
 
 - Private Type PROCESSENTRY32
 
 -     dwSize  As Long
 
 -     cntUseage  As Long
 
 -     th32ProcessID  As Long
 
 -     th32DefaultHeapID  As Long
 
 -     th32ModuleID  As Long
 
 -     cntThreads  As Long
 
 -     th32ParentProcessID  As Long
 
 -     pcPriClassBase  As Long
 
 -     swFlags  As Long
 
 -     szExeFile  As String * 1024
 
 - End Type
 
 - Private Type MODULEENTRY32
 
 -     dwSize As Long
 
 -     th32ModuleID As Long
 
 -     th32ProcessID As Long
 
 -     GlblcntUsage As Long
 
 -     ProccntUsage As Long
 
 -     modBaseAddr As Long
 
 -     modBaseSize As Long
 
 -     hModule As Long
 
 -     szModule As String * 256
 
 -     szExePath As String * 1024
 
 -     End Type
 
 -     Public Type THREADENTRY32
 
 -     dwSize As Long
 
 -     cntusage As Long
 
 -     th32threadID As Long
 
 -     th32OwnerProcessID As Long
 
 -     tpBasePri As Long
 
 -     tpDeltaPri As Long
 
 -     dwFlags As Long
 
 - End Type
 
 - Private Const TH32CS_SNAPPROCESS = &H2
 
 - Private Const TH32CS_SNAPmodule = &H8
 
 - Public Function GetModuleAdd(PID As Long, ModuleName As String) As Long
 
 - Dim pr As PROCESSENTRY32
 
 - Dim lp As Long
 
 - Dim mo As MODULEENTRY32
 
 - Dim LM As Long
 
 - Dim i As Long
 
 - Dim Temp As Variant
 
 - If ModuleName = "" Then GetModuleAdd = 0: Exit Function
 
 -     pr.dwSize = Len(pr)
 
 -         LM = CreateToolhelp32Snapshot(TH32CS_SNAPmodule, PID)
 
 -         If LM > 0 Then
 
 -             mo.dwSize = Len(mo)
 
 -             If Module32First(LM, mo) Then
 
 -                 Do
 
 -                     Temp = Left(mo.szExePath, InStr(mo.szExePath, Chr(0)) - 1)
 
 -                     Temp = Mid(Temp, InStrRev(Temp, "") + 1)
 
 -                     If UCase(Temp) = UCase(ModuleName) Then
 
 -                         GetModuleAdd = mo.modBaseAddr
 
 -                         Exit Function
 
 -                     End If
 
 -                     i = i + 1
 
 -                 Loop Until Module32Next(LM, mo) = 0
 
 -             End If
 
 -                 CloseHandle (LM)
 
 -             End If
 
 - End Function
 
  
 
  复制代码 |   
 
 
 
 |