- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我构建了一个通过 APIHiJack 连接到 Win32 TextOut 函数的应用程序。当应用程序启动时,DLL 将按预期注入(inject),并且我的新 TextOut 函数被成功调用。
目前,关于移除 Hook ,我正在努力解决两个问题,希望得到一些指导。
1) 如果某些应用程序关闭,它们不会向 DLL 发送 FreeLibrary(?) 调用以解除 Hook 和清理。这是否正常?如果是,通常如何处理?
2) 更重要的是,如果我的应用程序由于任何原因崩溃,应用程序仍然会像预期的那样 Hook 和崩溃,因为我的新 TextOut 函数不再存在。
我试图枚举所有进程并找到哪些进程包含 DLL(几乎是 Hook 技术的逆过程)但它似乎从来没有找到像 Hook 时那样多的注入(inject)点,因此 Hook 的应用程序崩溃.
非常感谢。
最佳答案
应用程序有两种主要方式
来终止:
ExitProcess():当他们使用 ExitProcess() 时,将调用 FreeLibrary()
(以及 中的
). THREAD_DETACH
DLLMAIN
TerminateProcess():但是当应用程序使用 TerminateProcess() 时,它会立即终止而不会进行任何清理。
我的解决方案是 Hook TerminateProcess()
并进行我需要的清理 - 特别是刷新日志文件的缓冲区并关闭它们。
但是:使用 TerminateProcess()
的终止表示严重错误并且应用程序可能不稳定。
关于c++ - 使用 APIHijack 解除 API Hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378824/
我构建了一个通过 APIHiJack 连接到 Win32 TextOut 函数的应用程序。当应用程序启动时,DLL 将按预期注入(inject),并且我的新 TextOut 函数被成功调用。 目前,关
我是一名优秀的程序员,十分优秀!