SnowFlake 0 Report post Posted August 6, 2015 (edited) 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=10802732http://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 Edited August 6, 2015 by SnowFlake Quote Share this post Link to post Share on other sites
RaZe 148 Report post Posted August 6, 2015 lol Quote Share this post Link to post Share on other sites