«Безопасная» DLL инъекция

Не очень хороший вопрос, извините.

У меня есть программа, которая должна быть предупреждена, когда файл открывается из проводника (т.е. вызывается ShellExecute (A / W)).

К сожалению, Microsoft удалила интерфейс COM (IShellExecuteHook), который позволяет вам перехватывать эти события в Vista и выше, предположительно, потому что старый код может вызвать сбой из-за изменений. Был способ обойти эту функцию, но она больше не работает.

Мы провели некоторое исследование, и похоже, что единственный способ перехватить вызовы в ShellExecute - это перенаправить вызов в shell32.dll. На данный момент яя смотрю на внедрение своей собственной DLL в процесс проводника, затем копирую запись IAT для ShellExecute для некоторого распределения адресов в моей DLL и, наконец, модифицирую запись IAT для ShellExecute, чтобы она указала на мою функцию, которая уведомит программу о том, что файл был открыть и перейти к исходной функции ShellExecute, адрес которой мы сохранили ранее.

Моя самая большая проблема здесь - антивирусы. Будут ли они заботиться о том, чтобы явводить в проводник? Будут ли они заботиться о том, чтобы ямодифицируете IAT?

Другая проблема заключается в том, безопасно ли это; это возможно (или скорее всего) для исследователяs привилегии безопасности, чтобы не позволить инъекцию через CreateRemoteThread? Если так, есть ли лучший способ сделать эту инъекцию?

Есть ли лучший способ сделать это в целом?

РЕДАКТИРОВАТЬ: Для тех, кто сталкивается с этим в будущем, explorer.exe не имеет IAT для shell32.dll; у него есть заголовок, но thunk полон ненужных значений, так чтоНасколько я могу судить, нет способа получить запись для каких-либо импортированных функций.

Похоже, туннелирование кода - единственный способ перехватить это.

Ответы на вопрос(4)

Ваш ответ на вопрос