当前位置:编程学习 > VB >>

vb.net 读取内存失败 求高手解答

如题  我用 readprocessmemory api 读取内存失败

不知道哪儿出错了 编译没有问题 

求解

答案:你是想读取游戏进程吧  这个问题刚开始也 让我郁闷了很久 

其实很多 游戏对读取内存做了特殊处理  常规的 调用api打开进程 读取内存 无效

可以尝试 用token   直接调用就ok了 返回true说明调用成功

下面是详细代码

 

 

 

Public Class ToKen
#Region "常数及结构声明"
    Private Const SE_PRIVILEGE_ENABLED As Int32 = 2
    Private Const EWX_SHUTDOWN As Int32 = 1
    Private Const EWX_REBOOT As Int32 = 2
    Private Const EWX_LOGOFF As Int32 = 0
    Private Structure LUID_AND_ATTRIBUTES
        Public pLuid As LUID
        Public Attributes As Integer
    End Structure
    Private Structure LUID
        Dim LowPart As Int32
        Dim HighPart As Int32
    End Structure
    Private Structure TOKEN_PRIVILEGES
        Public PrivilegeCount As Integer
        Public Privileges As LUID
        Public Attributes As Int32
    End Structure
#End Region

#Region "API声明"
    Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, ByRef lpLuid As LUID) As Int32
    Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As IntPtr, ByVal DisableAllPrivileges As Int32, ByRef NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Int32, ByRef PreviousState As TOKEN_PRIVILEGES, ByRef ReturnLength As Int32) As Int32
    Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As IntPtr, ByVal DesiredAccess As Integer, ByRef TokenHandle As IntPtr) As Boolean
#End Region
#Region "获取全部权限"
    Public Function ToKenPrivileges() As Boolean
        Dim hdlTokenHandle As Integer
        Dim tmpLuid As LUID
        Dim tkp As TOKEN_PRIVILEGES
        Dim tkpNewButIgnored As TOKEN_PRIVILEGES
        Dim lBufferNeeded As Integer
        Dim currentProcess As Process = Process.GetCurrentProcess()
        If OpenProcessToken(currentProcess.Handle, &HF00FF, hdlTokenHandle) Then
            LookupPrivilegeValue("", "SeDebugPrivilege", tmpLuid)
            tkp.PrivilegeCount = 1
            tkp.Privileges = tmpLuid
            tkp.Attributes = SE_PRIVILEGE_ENABLED
            Return AdjustTokenPrivileges(hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded)
        End If
    End Function
#End Region
End Class

上一个:vb中“Form_QueryUnload”是什么意思?
下一个:关于在VB中查询ACCESS表的问题,求教。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,