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)
}
;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 )
浙公网安备 33010602011771号