ппоршень
-
Автор темы
- #1
Не могу сделать форсированное перенаправление подключения к серверу. Казалось бы, делов то, нужно хукнуть connect и подменить второй аргумент sockaddr и вызвать функцию с новыми аргументами. Но нет, если сделать так, то мы получим исключение при попытке подключения к серверу, либо invalid address либо nullpointer.
Я сделал вывод структуры по байтам:
При подключении к любому серверу connect вызывается 3 раза. Если присмотреться к байтам второго аргумента можно увидеть следующее:
Первые 3 вызова функции connect появляются при попытке зайти на 127.0.0.1.
Последние 3 при попытке зайти на любой другой сервер.
Почему структуры одинаковые? Как подменить IP сервера к которому подключается клиент?
Я сделал вывод структуры по байтам:
C++:
int WSAAPI hooks::hk::hkconnect( SOCKET s, const struct sockaddr *name, int namelen ) {
printf( "connect called\n" );
BYTE saddr[ sizeof name ];
memcpy( &saddr, name, sizeof saddr );
for( BYTE byte:saddr ) {
printf( "%X ", byte );
}
printf( "\n" );
return hooks::pconnect( s, name, namelen );
}
Первые 3 вызова функции connect появляются при попытке зайти на 127.0.0.1.
Последние 3 при попытке зайти на любой другой сервер.
Почему структуры одинаковые? Как подменить IP сервера к которому подключается клиент?