所以我想让我的dll只能通过我的注射器注射,我认为一个好方法是只让我的dll能够在注射器运行时打开。但我不知道该怎么做。
正如Mayur在注释中提到的,您的DLL可以使用EnumProcesses()
枚举正在运行的进程,并获取它们的文件名以查找与您的注入器匹配的内容。可以在DLL_PROCESS_ATTACH
阶段在 DLL 的入口点函数中执行此操作。如果未检测到注入器,则入口点可以返回 FALSE 以中止加载。
或者,检测注入器的一种更简单的方法是让它在全局内核命名空间中通过CreateMutex()
创建命名互斥锁,然后让 DLL 入口点尝试通过 OpenMutex()
访问同一对象,如果互斥锁不存在,则加载失败。 有关更多详细信息,请参阅使用命名对象。