Я автор статьи Нектра. Исследование началось, когда мы хотели добавить дополнительные функции к ограниченному приложению Metro Mail, которое поставляется с Windows 8.
Хотя процесс был не совсем таким же, как в настольных приложениях, поскольку обычно приложения для метро приостанавливаются, мы подключили первую службу DCOM ,
Когда служба DCOM запускает приложение Metro Mail, в этот момент мы вставляем DLL с помощью известного метода вызова CreateRemoteThread/LoadLibrary.
В начальных тестах мы пытались вставить DLL, расположенную в той же папке, где наш тест был обнаружен, и обнаружил, что если dll находилась в system32, он загружается нормально.
Позже мы проводим дальнейшие исследования, чтобы узнать, почему dll не загружалась, если не в папку system32.
О подключении winsock мы не тестировали это, но я думаю, что это должно быть возможно, потому что по крайней мере на настольных компьютерах за метро есть общеизвестные DLL (kernel32, user32 и т. Д.), И мы подключили некоторые api без проблем.
Вы уверены, что первая ссылка не предназначена быть истолковано как: "Вы можете сделать инъекцию DLL, но вы не можете сделать это для перенаправления трафика? – Patashu
Всякий раз, когда кто-то говорит, что «невозможно», что они на самом деле означают, это нечто вроде «не должно быть возможным» или даже просто «я не знаю, как это сделать». Нектра нашел способ: поместить DLL в system32. –
@Sebastian: Я спрошу вас непосредственно: когда я поместил свою DLL в систему32 и сделаю крючок к приложению метро, могу ли я получить полный контроль над подключенным процессом (например: перенаправить winsock-трафик, запретить вызов «опасный» api?). Пожалуйста, сделайте нам отличный ответ, нам нужна действительно какая-то информация. –