在AHK中读程序存储器
问题描述:
所以我正在研究一个程序来读取游戏中的值(Mitos.is:The Game)。 这是类似于Agar.io在AHK中读程序存储器
你有一个大小(质量),我想要得到的数量,它是一个程序,而不是像Agar.io这样的在线游戏。
我发现这个自动热键脚本:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
ReadMemory(MADDRESS=0,PROGRAM="",BYTES=4)
{
Static OLDPROC, ProcessHandle
VarSetCapacity(MVALUE, BYTES,0)
If PROGRAM != %OLDPROC%
{
WinGet, pid, pid, % OLDPROC := PROGRAM
ProcessHandle := (ProcessHandle ? 0*(closed:=DllCall("CloseHandle"
,"UInt",ProcessHandle)) : 0)+(pid ? DllCall("OpenProcess"
,"Int",16,"Int",0,"UInt",pid) : 0)
}
If (ProcessHandle) && DllCall("ReadProcessMemory","UInt",ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",BYTES,"UInt *",0)
{ Loop % BYTES
Result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
Return Result
}
return !ProcessHandle ? "Handle Closed:" closed : "Fail"
}
mass := ReadMemory(Address here, "Mitos.is: The Game")
MsgBox, %mass%
它可以无缝,但有一个小问题,在作弊引擎我把找到的基址的自由,如下图所示:
然后插入到程序中它说“地址在这里”,如果这不是正确的地址,请纠正我,但是当我r estart游戏并运行我的脚本它说“失败”,但在Cheat Engine中地址仍然有效。帮帮我?
答
检查地址,如果它重新启动在比赛结束后的变化,或不重新启动游戏只是运行该脚本没有重启,你还没有定义字节,因此尝试以下,
ReadMemory(MADDRESS=0, PROGRAM="", BYTES=4)
mass := ReadMemory("0x123456", "Mitos.is: The Game", "4")
“PROGRAM”应该是正确的窗口标题使用间谍来获得正确的窗口标题,地址必须在十六进制值,即“0x15B29DD0”,我不知道你的金手指引擎如何读取程序存储器地址。
凹凸,任何人有一个想法? – CUZLOCKED
16次浏览1 upvote并且无评论或回复:( – CUZLOCKED