R0 CREW

Порядок загрузки модулей указанных в export forwards

модули указанные в export forwards загружаются при загрузке модуля имеющего форварды в своих экспортах? или при попытке получить адрес экспорта через импорт или апи?. …а если форварды замкнуты в кольцо как ведет себя загрузчик?

Интересный вопрос, думаю это можно узнать только опытным путём

ну я надеялся что возможно уже кто то исследовал и может даже статью написал =)

Карочь если есть цепочка forward export, то она начинает раскручиваться при вызове ntdll.LdrGetProcedureAddressEx, то есть при статической загрузке библиотеки, если где-то указан импорт на начало forward цепочки, либо при динамической (напр. вызов GetProcAddress). Если создать через forward export кольцо, то функция ntdll.LdrGetProcedureAddressEx тупо входит в рекурсию и поток\программа падает в результате переполнения стека.

Проверено на Win7x64

…забавно если ав раскручивают такие цепочки самостоятельно при проверке модулей =)…с тем же результатом что и винда.

Если эмулятор АВ впадёт в цикл, то навряд ли это будет как-то полезно. Эмулятор скорее всего схендлит переполнение стека и на этом эмуляция завершится как и выполнение программы\потока без эмулятора

зависит от того как и откуда эмулятор настраивает среду эмуляции…и как отреагирует на преполнение в собственном коде. тут есть потенциал для всяких интересностей которые могут произойти даже без запуска каких то модулей…типа флешку воткнул пошла автоматическая проверка…