require "alien"
--the address im trying to edit in the Mahjong game on Win7
local SCOREREF = 0x0744D554
--this should give me full access to the process
local ACCESS = 0x001F0FFF
--this is my process ID for my open window of Mahjong
local PID = 1136
--function to open proc
local op = alien.Kernel32.OpenProcess
op:types{ ret = "pointer", abi = "stdcall"; "int", "int", "int"}
--function to write to proc mem
local wm = alien.Kernel32.WriteProcessMemory
wm:types{ ret = "long", abi = "stdcall"; "pointer", "pointer", "pointer", "long", "pointer" }
local pRef = op(ACCESS, true, PID)
local buf = alien.buffer("99")
-- ptr,uint32,byte arr (no idea what to make this),int, ptr
print(wm(pRef, SCOREREF, buf, 4, nil))
--prints 1 if success, 0 if failed
C'est donc mon code. Je ne suis même pas sûr si j'ai les types définis correctement.Module Lua Alien - Problème lors de l'utilisation de la fonction WriteProcessMemory, incertain sur les types (unit32)
Je suis complètement perdu et j'ai besoin de conseils. J'aurais vraiment aimé qu'il y ait plus d'aide/documentation en ligne pour les extraterrestres, cela confond mon pauvre cerveau. Ce qui m'étonne tout à fait, c'est que WriteProcessMemory se terminera parfois avec succès (même s'il ne fait rien du tout, à ma connaissance) et échouera parfois aussi avec succès. Comme je l'ai dit, j'ai mal au cerveau.
Toute aide appréciée.
Cela ne semble pas changer le comportement du programme. Merci pour la réponse si! Plus d'informations; la fonction OpenProcess renvoie 'userdata: 00000048'. Est-ce un exemple correct de ce qu'il devrait retourner? – user308355
Je suppose que l'OpenProcess ne fonctionne pas, j'essaie de le faire fonctionner en ce moment même. – user308355
@jefferysanders: OpenProcess renvoyant un résultat différent de zéro signifie qu'il a réussi. Si WriteProcessMemory échoue, vous pouvez appeler GetLastError pour voir pourquoi. Peut-être avez-vous besoin d'appeler VirtualProtectEx pour vous accorder l'autorisation d'écriture en premier. – interjay