Есть кусок программы, написанный на С++. Помогите написать такой же на Delphi.
Цитата |
---|
Нам нужно найти в памяти kernelbase.dll, просканировать таблицу импорта, найти адрес импортируемой функции CsrClientCallServer и подменить его новым указателем на заранее подготовленную функцию CsrClientCallServer, которая всегда будет возвращать «успех». |
Код |
---|
ULONG NewCsrClientCallServer(PVOID Arg1, PVOID Arg2, ULONG Arg3, ULONG Arg4)
{
*( DWORD *)(( BYTE *)Arg1 + 0x20 ) = 0;
return 0;
}
...
DWORD ImportAddress, OriginalCsrClientCallServer, OldProtect;
ImportAddress = GetImportAddressFromIat(GetModuleHandle("kernelbase.dll"), "CsrClientCallServer");
VirtualProtect(( VOID *) ImportAddress, sizeof(DWORD), PAGE_EXECUTE_READWRITE, &OldProtect);
OriginalCsrClientCallServer = *(DWORD*)ImportAddress;
*(DWORD*)ImportAddress=(DWORD)NewCsrClientCallServer;
...
|
Заранее благодарен.