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 )