модули указанные в export forwards загружаются при загрузке модуля имеющего форварды в своих экспортах? или при попытке получить адрес экспорта через импорт или апи?. ..а если форварды замкнуты в кольцо как ведет себя загрузчик?
модули указанные в export forwards загружаются при загрузке модуля имеющего форварды в своих экспортах? или при попытке получить адрес экспорта через импорт или апи?. ..а если форварды замкнуты в кольцо как ведет себя загрузчик?
Интересный вопрос, думаю это можно узнать только опытным путём
High tech, low life
ну я надеялся что возможно уже кто то исследовал и может даже статью написал =)
Карочь если есть цепочка forward export, то она начинает раскручиваться при вызове ntdll.LdrGetProcedureAddressEx, то есть при статической загрузке библиотеки, если где-то указан импорт на начало forward цепочки, либо при динамической (напр. вызов GetProcAddress). Если создать через forward export кольцо, то функция ntdll.LdrGetProcedureAddressEx тупо входит в рекурсию и поток\программа падает в результате переполнения стека.
Проверено на Win7x64
High tech, low life
nosos (26-07-2015)
...забавно если ав раскручивают такие цепочки самостоятельно при проверке модулей =)..с тем же результатом что и винда.
Если эмулятор АВ впадёт в цикл, то навряд ли это будет как-то полезно. Эмулятор скорее всего схендлит переполнение стека и на этом эмуляция завершится как и выполнение программы\потока без эмулятора
High tech, low life
зависит от того как и откуда эмулятор настраивает среду эмуляции...и как отреагирует на преполнение в собственном коде. тут есть потенциал для всяких интересностей которые могут произойти даже без запуска каких то модулей...типа флешку воткнул пошла автоматическая проверка...