Plain text
复制到剪贴板
Open code in new window
EnlighterJS 3 Syntax Highlighter
#NoEnv
SetWorkingDir %A_ScriptDir%
!q::
WinActivate, Cheat Engine 7.2
sleep, 200
Click, 420 544 2
sleep, 200
WinGetText, val, 改变数值
if instr(val, "5")
{
SendInput 30
}
else
{
SendInput 1.5
}
sleep, 100
Send {Enter}
sleep, 100
WinActivate, Eternium
return
; 群友提问与解答: 能读到内存的值,却写不进去。 原来是我OpenProcess的时候参数就不对
!z::
addr := 0x13191050
WinGet, pid, PID, Eternium
; handle := DllCall("OpenProcess", "UInt", 16, "Int", false, "UInt", pid) ; 原来是我OpenProcess的时候参数就不对【原文】
handle := DllCall("OpenProcess", "uint", 16, "int", false, "uint", pid, "ptr")
VarSetCapacity(value, 4, 0 )
DllCall("ReadProcessMemory", "UInt", handle, "UInt", addr, "Str", value, "UInt", 4, "UIntP", 0)
num := NumGet(value, 0, "Float")
s := 1.5
if ( num == 1.5)
{
s := 50
}
NumPut(s, value, "Float")
nn := NumGet(value, 0, "Float")
DllCall("VirtualProtectEx", "UInt", handle, "UInt", addr, "UInt",0x04, "UIntP",0)
;DllCall("WriteProcessMemory", "UInt", handle, "UInt", addr, "Str", value, "UInt", 4, "UIntP", 0)
DllCall("WriteProcessMemory", "ptr", handle, "ptr", addr, "ptr", value, "uptr", 4, "ptrp", 0)
DllCall("CloseHandle", "UInt", handle)
return
/*
Tebayaki 反馈的记事本测试例子,但是我测试不行
WinGet, pid, PID, ahk_class Notepad
addr := 0x7FFCA78592F4 ; 随便找的,测试用
if !(handle := DllCall("OpenProcess", "uint", 0x1fffff, "int", false, "uint", pid, "ptr"))
throw Exception(A_LastError)
if !(DllCall("ReadProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0))
throw Exception(A_LastError)
MsgBox, % value
value := 50
if !(DllCall("WriteProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0))
throw Exception(A_LastError)
if !(DllCall("ReadProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0))
throw Exception(A_LastError)
MsgBox, % value
*/
#NoEnv SetWorkingDir %A_ScriptDir% !q:: WinActivate, Cheat Engine 7.2 sleep, 200 Click, 420 544 2 sleep, 200 WinGetText, val, 改变数值 if instr(val, "5") { SendInput 30 } else { SendInput 1.5 } sleep, 100 Send {Enter} sleep, 100 WinActivate, Eternium return ; 群友提问与解答: 能读到内存的值,却写不进去。 原来是我OpenProcess的时候参数就不对 !z:: addr := 0x13191050 WinGet, pid, PID, Eternium ; handle := DllCall("OpenProcess", "UInt", 16, "Int", false, "UInt", pid) ; 原来是我OpenProcess的时候参数就不对【原文】 handle := DllCall("OpenProcess", "uint", 16, "int", false, "uint", pid, "ptr") VarSetCapacity(value, 4, 0 ) DllCall("ReadProcessMemory", "UInt", handle, "UInt", addr, "Str", value, "UInt", 4, "UIntP", 0) num := NumGet(value, 0, "Float") s := 1.5 if ( num == 1.5) { s := 50 } NumPut(s, value, "Float") nn := NumGet(value, 0, "Float") DllCall("VirtualProtectEx", "UInt", handle, "UInt", addr, "UInt",0x04, "UIntP",0) ;DllCall("WriteProcessMemory", "UInt", handle, "UInt", addr, "Str", value, "UInt", 4, "UIntP", 0) DllCall("WriteProcessMemory", "ptr", handle, "ptr", addr, "ptr", value, "uptr", 4, "ptrp", 0) DllCall("CloseHandle", "UInt", handle) return /* Tebayaki 反馈的记事本测试例子,但是我测试不行 WinGet, pid, PID, ahk_class Notepad addr := 0x7FFCA78592F4 ; 随便找的,测试用 if !(handle := DllCall("OpenProcess", "uint", 0x1fffff, "int", false, "uint", pid, "ptr")) throw Exception(A_LastError) if !(DllCall("ReadProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0)) throw Exception(A_LastError) MsgBox, % value value := 50 if !(DllCall("WriteProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0)) throw Exception(A_LastError) if !(DllCall("ReadProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0)) throw Exception(A_LastError) MsgBox, % value */
#NoEnv
SetWorkingDir %A_ScriptDir%

!q::
  WinActivate, Cheat Engine 7.2
  sleep, 200
  Click, 420 544 2
  sleep, 200
  WinGetText, val, 改变数值
  if instr(val, "5") 
  {
    SendInput 30
  }
  else
  {
    SendInput 1.5
  }
  sleep, 100
  Send {Enter}
  sleep, 100
  WinActivate, Eternium
  return

; 群友提问与解答:       能读到内存的值,却写不进去。       原来是我OpenProcess的时候参数就不对
!z::
addr := 0x13191050
WinGet, pid, PID, Eternium
; handle :=  DllCall("OpenProcess", "UInt", 16, "Int", false, "UInt", pid)  ; 原来是我OpenProcess的时候参数就不对【原文】
handle := DllCall("OpenProcess", "uint", 16, "int", false, "uint", pid, "ptr")
VarSetCapacity(value, 4, 0 )
DllCall("ReadProcessMemory", "UInt", handle, "UInt", addr, "Str", value, "UInt", 4, "UIntP", 0)
num := NumGet(value, 0, "Float")
s := 1.5
if ( num == 1.5)
{
    s := 50
}
NumPut(s, value, "Float")
nn := NumGet(value, 0, "Float")
DllCall("VirtualProtectEx", "UInt", handle, "UInt", addr, "UInt",0x04, "UIntP",0)
;DllCall("WriteProcessMemory", "UInt", handle, "UInt", addr, "Str", value, "UInt", 4, "UIntP", 0)
DllCall("WriteProcessMemory", "ptr", handle, "ptr", addr, "ptr", value, "uptr", 4, "ptrp", 0)
DllCall("CloseHandle", "UInt", handle)
return

/*
Tebayaki  反馈的记事本测试例子,但是我测试不行

WinGet, pid, PID, ahk_class Notepad
addr := 0x7FFCA78592F4  ; 随便找的,测试用

if !(handle := DllCall("OpenProcess", "uint", 0x1fffff, "int", false, "uint", pid, "ptr"))
    throw Exception(A_LastError)
if !(DllCall("ReadProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0))
    throw Exception(A_LastError)
MsgBox, % value

value := 50
if !(DllCall("WriteProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0))
    throw Exception(A_LastError)

if !(DllCall("ReadProcessMemory", "ptr", handle, "ptr", addr, "float*", value, "uptr", 4, "uptr*", 0))
    throw Exception(A_LastError)
MsgBox, % value


*/

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。