我有一个目标进程,它在调用主代码之前加载DLL。它通过DLL将其名称添加到文件的ImportsTable(使用StudPE)来实现。我的目标是创建一个钩子DLL,它将注入此进程并在加载其导入之前拦截其调用。因此,目标进程将在其安全DLL之前加载我的hook dll。我尝试使用传统方法,但我没有成功,因为安全DLL总是在我的钩子DLL的DllMain被调用之前被调用。有人能告诉我一个解决这个问题的方法吗?
答案 0 :(得分:0)
DLL按顺序加载,顺序与PE头中的导入条目相同。大多数PE编辑器会让您重新排序导入。您还应该注意,如果另一个DLL X依赖于安全DLL,那么它将与DLL X同时加载。此外,如果安全DLL使用静态加载,则通过在运行时修改导入表来挂钩仍然应该是即使你的DLL稍后加载也会有效,尽管你会错过在此期间完成的调用(但不应该是任何调用)。
答案 1 :(得分:0)
您可以创建暂停的目标进程并使用CreateRemoteThread()进行注入,但请注意以下限制:
如果目标进程是由其他人生成的,则必须在初始化之前拦截其创建。有一些方法可以做到这一点,所有这些方法都是无证的,因此不是未来的证据。