我已经构建了一个通过 APIHiJack 连接到 Win32 TextOut 函数的应用程序。当应用程序启动时,DLL 会按预期注入,并且我的新 TextOut 函数被成功调用。
目前,我正在努力解决两个关于移除钩子的问题,并希望得到一些指导。
1) 如果某些应用程序已关闭,它们不会向 DLL 发送 FreeLibrary(?) 调用以取消挂钩和清理。这是否正常,如果是,通常如何处理?
2) 更重要的是,如果我的应用程序因任何原因崩溃,应用程序仍然会出现预期的挂钩和崩溃,因为我的新 TextOut 函数不再存在。
我试图枚举所有进程并找到哪些进程包含 DLL(几乎是挂钩技术的逆过程),但它似乎从来没有找到像挂钩时那么多的注入点,因此挂钩的应用程序崩溃了。
提前谢谢了。