AutoHotKey也能读取魔兽内存

AutoHotKey也能读取魔兽内存

首先提升权限

EnableDebugPrivilege() 
{
   Process, Exist 
   h := DllCall("OpenProcess", "UInt", 0x0400, "Int", false, "UInt", ErrorLevel)      
   DllCall("Advapi32.dll\OpenProcessToken", "UInt", h, "UInt", 32, "UIntP", t)
   VarSetCapacity(ti, 16, 0) 
   NumPut(1, ti, 0)  
   DllCall("Advapi32.dll\LookupPrivilegeValue", "UInt", 0, "Str", "SeDebugPrivilege", "Int64P", luid)
   NumPut(luid, ti, 4, "int64")
   NumPut(2, ti, 12)  
   DllCall("Advapi32.dll\AdjustTokenPrivileges", "UInt", t, "Int", false, "UInt", &ti, "UInt", 0, "UInt", 0, "UInt", 0)
   DllCall("CloseHandle", "UInt", h)  
}
;可用于获取地址或 Int(整数)
;address:地址 
;textCount:字节数
GetAddressFromAddress(address,byteCount 
=4)
{
   VarSetCapacity(value,byteCount,
0)
   WinGet,pid,PID,ahk_class Warcraft III 
   ;得到魔兽窗口的进程pid
   war3handle :
= DllCall("OpenProcess""UInt"16"Int"false"UInt", pid) ;打开魔兽进程   
   DllCall(
"ReadProcessMemory","UInt",war3handle,"UInt",address,"Str",value,"UInt",byteCount,"UIntP",0)
   DllCall(
"CloseHandle""UInt", war3handle)  ; 关闭魔兽进程句柄
   
return NumGet(value)
}

  然后就可以用上面方法获取了,

使用方法:

UnitNode := GetAddressFromAddress(ListHead + 0x8 )

  

posted on 2011-07-14 10:35  虾哥哥  阅读(2143)  评论(0编辑  收藏  举报