PDA

Просмотр полной версии : использование NtWriteVirtualMemory


артём612
06.08.2013, 18:09
Возможно ли использование функции NtWriteVirtualMemory в обычном *exe приложении?

была такая попытка...


Функция

typedef NTSTATUS (WINAPI * ZwWriteVirtualMemory)(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, ULONG BufferLength, PULONG ReturnLength);


BOOL NtWriteProcessMemory(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, ULONG BufferLength, PULONG ReturnLength)
{
ZwWriteVirtualMemory qWriteProcessMemory = 0;
qWriteProcessMemory = (ZwWriteVirtualMemory)GetProcAddress(GetModuleHand leA("ntdll.dll"),"ZwWriteVirtualMemory");
qWriteProcessMemory(ProcessHandle,BaseAddress,Buff er,BufferLength,ReturnLength);
return true;
}


Использование

DWORD buf = 0x90;
DWORD newp;
PDWORD old;
VirtualProtect((LPVOID)0x762567C3,sizeof(buf),newp ,old);
NtWriteProcessMemory(GetCurrentProcess(),(PVOID)0x 762567C3,(PVOID)buf,sizeof(buf),0);
VirtualProtect((LPVOID)0x762567C3,sizeof(buf),(DWO RD)old,0);


но она ничего не пишет по этому адресу ='(
Ps : адрес просто для тестирования функции

если что то не так написал прошу критиковать !