Caution
Этот раздел содержит информацию про устройство программы, но не сервера. Раздел ещё не готов
Патч можно выполнить путём стандартного перехвата API вызовов через дебаггер или DLL библиотеку.
В нашем случае Агент подключается через WinSocks2 (WS2_32.dll). С помощью программы API Monitor можно увидеть, что для подключения к серверам вызываются функции inet_addr
и gethostbyname
. В случае с нашим патчем можно обойтись лишь перехватом функции gethostbyname
, так как она используется и для подключения к MRIM по порту 2042/2041, и для подтягивания аватарок (образов).
Если первый и единственный аргумент функции gethostbyname
равен mrim.mail.ru
или obraz.foto.mail.ru
, то его нужно заменить на свои домены.
Однако при отправке запроса на сервер с аватарками (образами) в HEAD и GET всё ещё упоминается хост obraz.foto.mail.ru, т.к. путь там указывается прямо вместе с протоколом и доменом. Необходимо либо изменить настройки реверс-прокси (в нашем случае будет использоваться nginx), и тогда не придётся модифицировать запрос к серверу фото; либо в запросах к серверу заменить домен на свой. Запрос к серверу образов можно модифицировать через тот же WinSocks2 - конркетно, в функции send
.