Нам нужно найти в памяти 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;
...
которая всегда будет возвращать «успех».
Код:return 0;
Троян на Делфи ? Тышо ... нет конечно. Я хочу таким способом проинжектиться к процессу в windows 7. А это цитаты с статьи, которую я нашел.зачем тебе нужно перехватывать CsrClientCallServer? трояна чтоли на Delphi пишешь?
Я хочу таким способом проинжектиться к процессу в windows 7. А это цитаты с статьи, которую я нашел.
К сожалению те функции, которые были описаны не подходят для решения данной задачи, т.к. они не работают в висте и семерке (точнее работают, но функция "CsrClientCallServer" проверяет процесс чужой или свой. и если процесс чужой - то инжекта не происходит. можно инжектиться только в свой процесс с помощью этих функций). А про параметры функции - это уже отдельный разговор, который не представляет никакой проблемы.Это как лечить зуб через задницу, с помощью отбойного молотка.
Для указанной задачи есть OpenProcess/VirtualAllocEx/WriteProcessMemory/CreateRemoteThread, есть хуки, и еще дохуя разных способов. Но такого извращенного я еще не встречал
Ты в курсе что параметры функции которую ты пытаешься перехватить зависят даже от билда операционной системы?
пока это самый лучший предложенный варианттогда уж cbuilder бери - как минимум родной для таких штук С++
Мля ну почитай уже чтоли как stub dll сделать или хук. Если уж берешься чужие программы курочить так не худо бы хотябы Рихтера пробежать по диагонали.К сожалению те функции, которые были описаны не подходят для решения данной задачи, т.к. они не работают в висте и семерке (точнее работают, но функция "CsrClientCallServer" проверяет процесс чужой или свой. и если процесс чужой - то инжекта не происходит. можно инжектиться только в свой процесс с помощью этих функций). А про параметры функции - это уже отдельный разговор, который не представляет никакой проблемы.
пока это самый лучший предложенный вариант
К сожалению те функции, которые были описаны не подходят для решения данной задачи, т.к. они не работают в висте и семерке