任何人都可以解释一个程序如何钩入和修改Windows中的其他程序的行为?
这怎么可能? 不要Windows程序保护自己的其他程序进入他们的记忆等? (我不知道内部是如何工作的,所以我只是说“进入他们的记忆” – 我敢打赌它比这更复杂。)
像Windows 7的现代Windows还允许它吗?
谢谢,Boda Cydo
有几种不同的方法来挂钩和修改其他程序的行为。
例如,您可以直接写入另一个程序的内存(WriteProcessMemory),也可以将一个线程注入到另一个程序的内存(CreateRemoteThread)中。 这假定你有一些权利来控制其他程序。
你也可以通过SetWindowsHookEx注入一个窗口钩子。 这假设你正在用户的会话中运行在与你正在注入的程序相同或更高的完整性级别。
这仍然有几个原因。 没有办法修改其他程序的行为,你将无法实现一个调试器。 Windows钩子被测试程序,辅助程序,改变Windows外观的程序等所使用。
想象一下,将数据保存到文件X.txt中的应用程序,您可以获取x.txt内容,并尝试查找保存的x.txt与当前x.txt的差异,一旦发生变化,就可以知道事件发生了程序X修改了它的x.txt文件。
你可以在较低的层次上做到这一点,但概念保持不变,(监视变化的东西)。