Ответ 1
В прошлом с С++ я смог подключиться к функции gotostbyname WSOCK32.DLL и перенаправить DNS-запросы. Для этого я использовал библиотеку Microsoft Detours.
Что касается С#, я нашел это: http://easyhook.codeplex.com/, возможно, это поможет вам. В основном вы можете подключиться к функции windows gethostbyname
и выполнить свой собственный код или вернуть другой результат (другой IP).
Другим возможным решением является временное (и программное) редактирование файла hosts, когда приложение запускается и заканчивается. Из вашего собственного кода.
EDIT: я нашел свой старый код на С++, возможно, он даст вам подсказку, что делать.
struct hostent FAR * WSAAPI MyGetHostByName(IN const char FAR * name)
{
// Call the regular function
struct hostent* ret = GetHostByNameFunction(name);
// Check if it the hostname you want to reroute
if ( strcmp(host, (char*)name) == 0 )
{
// Edit the IP returned by the regular gethostbyname
ret->h_addr_list[0] = hostIP;
ret->h_length = 15;
}
// Return the result
return ret;
}
EDIT2: нашел еще одну ссылку с более новой версией easyhooks