артём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 : адрес просто для тестирования функции
если что то не так написал прошу критиковать !
была такая попытка...
Функция
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 : адрес просто для тестирования функции
если что то не так написал прошу критиковать !