Conversion adresse mémoire

Résolu
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010 - 24 sept. 2007 à 13:22
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010 - 24 sept. 2007 à 17:38
Bonjour à tous,

J'ai une question peut être bête mais après avoir bien cherché je ne trouve rien qui me mette sur la voie... donc...

j'ai une adresse mémoire sous la forme 0x008EF660
comment l'intégrer dans VirtualProtectEx() ?

Car comme ceci
VirtualProtectEx(HRBRWindow, 0x008EF660,4,PAGE_READWRITE,OldProtect);
j'ai bien évidemment une erreur

Philippe DROUET

3 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
24 sept. 2007 à 16:33
0x... c'est le format des nombres hexadecimaux en C/C++ et autre langages C like mais pas en Delphi.

en Delphi, un nombre hexadecimal se note : $xxxxxxxxx

exemple avec ton code :

var MA : DWORD;
begin
  MA := $008EF660;
  VirtualProtectEx(HRBRWindow, MA, 4, PAGE_READWRITE, OldProtect);
...
end;

<hr size="2" width="100%" />
http://deefaze.gnomz.com
3
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010
24 sept. 2007 à 16:56
Merci beaucoup f0xi.

Philippe DROUET
0
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010
24 sept. 2007 à 17:38
f0xi s'il te plais, pourrais tu encore me donner un petit coup de pouce ?

en fait j'ai ça en C/C++ :

DWORD OldProtect = 0;
DWORD damageBlockAddress = 0;
VirtualProtectEx(HRBRWindow,(LPVOID)0x008EF660,4,PAGE_READWRITE,&OldProtect);
ReadProcessMemory(HRBRWindow,(LPCVOID)0x008EF660, &damageBlockAddress, 4, NULL);
damageBlockAddress += 0x620;
VirtualProtectEx(HRBRWindow,(LPVOID)damageBlockAddress,4,PAGE_READWRITE,&OldProtect);
ReadProcessMemory(HRBRWindow,(LPCVOID)damageBlockAddress, &damageBlockAddress, 4, NULL);
.....
DWORD value = 0;
DWORD bytesWritten = 0;
DWORD leftDoorOffset = damageBlockAddress + 0x36C;
VirtualProtectEx(hProcess,(LPVOID)leftDoorOffset,4,PAGE_READWRITE,&OldProtect);
WriteProcessMemory(hProcess, (LPVOID)leftDoorOffset, &value, 4, &bytesWritten);

et j'aurais besoin de le traduire en delphi....
Avec les renseignements que tu m'as fourni, jusqu'au premier VirtualProtectEx j'arrive à compiler mais au niveau du ReadProcessMemory j'ai une erreur me disant que les paramètres var originaux et formels doivent être identiques !!
J'ai ça comme déclarations :
-    HRBRWindow : THandle;
-    dwProcessId, OldProtect, damageBlockAddress: dword;
et j'ai tenté de comiler ça :

OldProtect := 0;
damageBlockAddress := 0;
MA := $008EF660;
VirtualProtectEx(HRBRWindow, Ptr(MA),4,PAGE_READWRITE,OldProtect);
ReadProcessMemory(HRBRWindow, Ptr(MA), Ptr(damageBlockAddress), 4, nil);
...

merci en tout cas pour ta première réponse.

Philippe DROUET
0