Тема: AHK: Запись в память процесса. Ошибка 998
Скопипастил код из этой темы http://forum.script-coding.com/viewtopic.php?id=12861. При попытке записать число в память процесса возникает ошибка 998. Что это за ошибка? И правильно ли я все делаю?
>^t::
pid := 8744
num := 0
address := 0x3663C80
WriteNumToProcessMemory(num, pid, address)
return
WriteNumToProcessMemory(number, pPID, pAddress) {
size := VarSetCapacity(buff, 4, 0)
NumPut(number, buff)
Return WriteProcessMemory(pPID, pAddress, &buff, size)
}
WriteProcessMemory(PID, pAddress, pLocalBuff, size) {
static PROCESS_VM_OPERATION := 0x8, PROCESS_VM_WRITE := 0x20
if !hProc := DllCall("OpenProcess", UInt, PROCESS_VM_OPERATION|PROCESS_VM_WRITE, Int, 0, UInt, PID, Ptr) {
MsgBox, Не удалось открыть процесс! Ошибка %A_LastError%
return
}
if !DllCall("WriteProcessMemory", Ptr, hProc, Ptr, pAddress, Ptr, pLocalBuff, Ptr, size, PtrP, writtenBytes)
MsgBox, Не удалось записать данные! Ошибка %A_LastError% ; Ошибка возникает здесь. A_LastError = 998
DllCall("CloseHandle", Ptr, hProc)
Return writtenBytes
}
В статье про DllCall ничего про A_LastError нет. Гугл говорит что 998 это "Неверная попытка доступа к адресу памяти".
Я правильно понимаю, что под pAddress понимается отступ относительно адреса процесса? CheatEngine показывает нужный адрес как "process.exe + 0x3663C80". На всякий случай попробовал указать и абсолютный адрес, результат тот же. Сильно не пинайте, делаю это впервые.