在 VB.net 中查找 DLL 的基址
Finding base address of DLL in VB.net
所以大约 2 周前我问了一个类似的问题,关于如何找到应用程序的基地址,但现在我也想知道如何为 DLL 找到它? (不是我构建的应用程序的 dll,而是系统上另一个应用程序 运行 的 dll)
Sub Main()
For Each _process As Process In Process.GetProcesses
If (CanAccessProcess(_process)) Then
For Each _module As ProcessModule In _process.Modules
Console.WriteLine(_module.BaseAddress)
Next
End If
Next
Console.ReadLine()
End Sub
Function CanAccessProcess(_process As Process)
Try
Dim temp As ProcessModule = _process.MainModule
temp = Nothing
Catch ex As System.ComponentModel.Win32Exception
' Its probably a 64 bit process
Return False
End Try
Return True
End Function
这将简单地显示我们可以访问的所有进程的所有模块的所有BaseAddresses。它首先尝试访问其主模块的进程,以查看是否引发异常。如果它引发,我们知道我们无权访问该过程。
所以大约 2 周前我问了一个类似的问题,关于如何找到应用程序的基地址,但现在我也想知道如何为 DLL 找到它? (不是我构建的应用程序的 dll,而是系统上另一个应用程序 运行 的 dll)
Sub Main()
For Each _process As Process In Process.GetProcesses
If (CanAccessProcess(_process)) Then
For Each _module As ProcessModule In _process.Modules
Console.WriteLine(_module.BaseAddress)
Next
End If
Next
Console.ReadLine()
End Sub
Function CanAccessProcess(_process As Process)
Try
Dim temp As ProcessModule = _process.MainModule
temp = Nothing
Catch ex As System.ComponentModel.Win32Exception
' Its probably a 64 bit process
Return False
End Try
Return True
End Function
这将简单地显示我们可以访问的所有进程的所有模块的所有BaseAddresses。它首先尝试访问其主模块的进程,以查看是否引发异常。如果它引发,我们知道我们无权访问该过程。