Итак, я хочу, чтобы моя dll могла быть инъецирована только моим инжектором, и я решил, что хороший способ сделать это - позволить моей dll открываться, когда инжектор работает.Но я понятия не имею, как это сделать.
Как отметил Майур в комментариях, ваша DLL может перечислять запущенные процессы , используя EnumProcesses(), и получать их имена в поисках совпадений с вашим инжектором. Вы можете сделать это в функции точки входа вашей DLL на этапе DLL_PROCESS_ATTACH. Если инжектор не обнаружен, ваша точка входа может вернуть FALSE, чтобы прервать загрузку.
EnumProcesses()
DLL_PROCESS_ATTACH
В качестве альтернативы, гораздо более простой способ обнаружить ваш инжектор - это создать именованный мьютекс с помощью CreateMutex() в глобальном пространстве имен ядра, а затем попросить точку входа DLL попытаться получить доступ к этому же объекту. через OpenMutex() и не удается загрузить, если мьютекс не существует. См. Использование именованных объектов для получения более подробной информации.
CreateMutex()
OpenMutex()