SnowFlake
Members-
Content Count
1 -
Joined
-
Last visited
Everything posted by SnowFlake
-
Path Of Exile reading pointers example [AHK]
a topic posted SnowFlake in User's script for POE and/or Exiled Bot
Hello, this is an example of what you can do with AHK and pointers/reading the games memory, i hope someone finds this useful Main page: http://www.autohotkey.com/board/topic/148284-path-of-exile-reading-pointers-example/ video: Picture: links also posted on: http://www.autohotke...inters-example/ http://www.mpgh.net/...4679&p=10802732 http://www.blizzhack...?f=245&t=502518 scripts/functions i used: Poe.ahk IF NOT A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } #Include, memory.ahk #SingleInstance force ProcessName := "PathOfExile.exe" hwnd := MemoryOpenFromName(ProcessName) HP = SH = MA = EX = IT = ST = DE = Gui, +AlwaysOnTop Gui, Add, Text,,Life: Gui, Add, Text,,Shield: Gui, Add, Text,, Mana: Gui, Add, Text,, EXP: Gui, Add, Text,,Intelligence: Gui, Add, Text,, Strenght: Gui, Add, Text,, Dexterity: Gui, Add, Edit, ReadOnly vHP_GUI ym Gui, Add, Edit, ReadOnly vSH_GUI Gui, Add, Edit, ReadOnly vMA_GUI Gui, Add, Edit, ReadOnly vEX_GUI Gui, Add, Edit, ReadOnly vIT_GUI Gui, Add, Edit, ReadOnly vST_GUI Gui, Add, Edit, ReadOnly vDE_GUI Gui, Show, , POE Reader Loop { ; Life,Mana,sheiald,exp HP2 := MemoryReadPointer(hwnd,HP, "int") GuiControl,, HP_GUI, %HP2% SH2 := MemoryReadPointer(hwnd,SH, "int") GuiControl,, SH_GUI, %SH2% MA2 := MemoryReadPointer(hwnd,MA, "int") GuiControl,, MA_GUI, %MA2% EX2 := MemoryReadPointer(hwnd,EX, "int") GuiControl,, EX_GUI, %EX2% ; inteletins,srange,dexter IT2 := MemoryReadPointer(hwnd,IT, "int") GuiControl,, IT_GUI, %IT2% ST2 := MemoryReadPointer(hwnd,ST, "int") GuiControl,, ST_GUI, %ST2% DE2 := MemoryReadPointer(hwnd,DE, "int") GuiControl,, DE_GUI, %DE2% } return memory.ahk MemoryOpenFromPID(PID, Privilege=0x1F0FFF) { HWND := DllCall("OpenProcess", "Uint", Privilege, "int", 0, "int", PID) return HWND } MemoryOpenFromName(Name, Privilege=0x1F0FFF) { Process, Exist, %Name% PID := ErrorLevel Return MemoryOpenFromPID(PID, Privilege) } MemoryOpenFromTitle(title, privilege=0x1F0FFF) { WinGet, PID, PID, %title% Return MemoryOpenFromPID(PID, Privilege) } MemoryClose(hwnd) { return DllCall("CloseHandle", "int", hwnd) } MemoryWrite(hwnd, address, writevalue, datatype="int", length=4, offset=0) { VarSetCapacity(finalvalue, length, 0) NumPut(writevalue, finalvalue, 0, datatype) return DllCall("WriteProcessMemory", "Uint", hwnd, "Uint", address+offset, "Uint", &finalvalue, "Uint", length, "Uint", 0) } MemoryRead(hwnd, address, datatype="int", length=4, offset=0) { VarSetCapacity(readvalue,length, 0) DllCall("ReadProcessMemory","Uint",hwnd,"Uint",address+offset,"Str",readvalue,"Uint",length,"Uint *",0) finalvalue := NumGet(readvalue,0,datatype) return finalvalue } MemoryWritePointer(hwnd, base, writevalue, datatype="int", length=4, offsets=0, offset_1=0, offset_2=0, offset_3=0, offset_4=0, offset_5=0, offset_6=0, offset_7=0, offset_8=0, offset_9=0) { B_FormatInteger := A_FormatInteger Loop, %offsets% { baseresult := MemoryRead(hwnd,base) Offset := Offset_%A_Index% SetFormat, integer, h base := baseresult + Offset SetFormat, integer, d } SetFormat, Integer, %B_FormatInteger% return MemoryWrite(hwnd,address,writevalue,datatype,length) } MemoryReadPointer(hwnd, base, datatype="int", length=4, offsets=0, offset_1=0, offset_2=0, offset_3=0, offset_4=0, offset_5=0, offset_6=0, offset_7=0, offset_8=0, offset_9=0) { B_FormatInteger := A_FormatInteger Loop, %offsets% { baseresult := MemoryRead(hwnd,base) Offset := Offset_%A_Index% SetFormat, integer, h base := baseresult + Offset SetFormat, integer, d } SetFormat, Integer, %B_FormatInteger% return MemoryRead(hwnd,base,datatyp,length) } MemoryGetAddrPID(PID, DllName) { VarSetCapacity(me32, 548, 0) NumPut(548, me32) snapMod := DllCall("CreateToolhelp32Snapshot", "Uint", 0x00000008, "Uint", PID) If (snapMod = -1) Return 0 If (DllCall("Module32First", "Uint", snapMod, "Uint", &me32)) { Loop { If (!DllCall("lstrcmpi", "Str", DllName, "UInt", &me32 + 32)) { DllCall("CloseHandle", "UInt", snapMod) Return NumGet(&me32 + 20) } } Until !DllCall("Module32Next", "Uint", snapMod, "UInt", &me32) } DllCall("CloseHandle", "Uint", snapMod) Return 0 } MemoryGetAddrName(Name, DllName) { Process, Exist, %Name% PID := ErrorLevel Return MemoryGetAddrPID(PID, DllName) } MemoryGetAddrTitle(Title, DllName) { WinGet, PID, PID, %Title% Return MemoryGetAddrPID(PID, DllName) } SetPrivilege(privilege = "SeDebugPrivilege") { success := DllCall("advapi32.dll\LookupPrivilegeValueA","uint",0,"str",privilege,"int64*",luid_SeDebugPrivilege) if (success = 1) && (ErrorLevel = 0) { returnval = 0 } else { returnval = %ErrorLevel% } return %returnval% } SuspendProcess(hwnd) { return DllCall("ntdll\NtSuspendProcess","uint",hwnd) } ResumeProcess(hwnd) { return DllCall("ntdll\NtResumeProcess","uint",hwnd) } Cheat engine.ahk IF NOT A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } Cheat_Engine_Dynamic_Pointer_Catcher(CH_Path,CH_title,Exe_name,Game_tile,vlaue,move_dir,vlaue2) { SoundBeep WinMinimizeAll WinActivate, %Game_tile% Run, %CH_Path% WinWaitActive, %CH_title% Winmove,%CH_title%,,0,0,50,50 ControlClick, Window3, %CH_title%,,,, NA Sleep, 500 ControlFocus, LCLListBox1, %CH_title% Sleep, 500 Send, %Exe_name% Sleep, 1000 Send, {enter} ControlSetText, Edit1, %vlaue%, %CH_title% Sleep, 500 ControlClick, Button15, %CH_title%,,,, NA Loop { ControlGetText, Button15_1, Button15,%CH_title% IF (Button15_1 = "New Scan") { WinActivate, %Game_tile% WinWaitActive, %Game_tile% Sleep, 500 Send, {%move_dir%} break } } WinActivate, %CH_title% ControlGetText, Button15, Button15,%CH_title% Loop { IF (Button15 = "New Scan") { ControlSetText, Edit1,%vlaue2%, %CH_title% Sleep, 500 ControlClick, Button6, %CH_title%,,,, NA Sleep, 500 ControlClick, x32 y115, %CH_title%,,,, NA ControlClick, x32 y115, %CH_title%,,,, NA Sleep, 400 Click 225, 423, 2 Sleep, 400 send, {ctrl down} send, {C} send, {ctrl up} Process,Close,cheatengine-x86_64.exe Process,Close,cheatengine-i386.exe Process,Close,Cheat Engine.exe NormPoint := Clipboard coord1 := format( "0x{}", format( "{}", "0x" clipboard ) ) Clipboard = %NormPoint% FileAppend,Pointer: %NormPoint%`nHex Pointer: %coord1%`n`n,%Game_tile%_Dynamic_pointers.ini TrayTip,%CH_title% Dynamic Pointer Catcher, Catched it!`n`nPointer: %NormPoint%`nHex Pointer: %coord1%,3 break } } } ExitApp return Escape::ExitApp