dll инъекция в sp3
Для одной сетевой программы понадобилось немного подправить протокол обмена данными, исходных кодов нет и решили сделать через dll инъекцию:
- функцией CreateRemoteThread создаем поток LoadLibrary (адрес берется GetProcAddress в заражающем процессе, уверяют что kernel32 грузится раньше всех и берет себе один и тот же адрес),
- подставляем в таблице импорта свои адреса на wsock32!send и wsock32!recv
- и правим протокол при отправке и получении.
Разрабатывал на WinXP SP2, все работает отлично.
Но при запуске программы на SP3 протокол не правится. Толи не инжектит, толи PE заголовок поменял формат, толи kernel32 по другому адресу грузится в разных процессах, толи, толи, толи....
Нет возможности получить доступ к компу с SP3 по крайней мере в течении пары дней и пока остается только догадываться.
Был бы рад если бы кто нибудь уже спотыкавшийся на этом дал бы какой нибудь совет.
UPD че странно, на home edition sp3 работает... может и не в sp3 дело.. видимо надо тот комп отлаживать.
советы все еще принимаются
а вот и совет: ждите винды с SP3 и дебажьте ;) со слов тут сложно что-то сказать.
Просто dll была скопилирована без Runtime DLL =\ и тихонько завершалась ничего не перехватив.
Новая проблема - NOD32 стал ругаться на внедрителя DLL, что он может быть вирусом и без всяких запросов перемещает в карантин. Я так понимаю, ничего с этим не поделать? Это будет очень неудобно для пользователей.
скорее всего не нравится ему CreateRemoteThread. выключить эвристику, либо по-другому реализовать инжект.
Цитата: bagie2
скорее всего не нравится ему CreateRemoteThread. выключить эвристику, либо по-другому реализовать инжект.
Переделал проект из Win32 Application в MFC Application - ругаться перестал. Чудеса.
Видимо эмулятор на mfc спотыкается
Цитата:
NOD32 стал ругаться на внедрителя DLL
Это он и должен делать. Потому что так часто делают вирусы.