反截屏技术探索
最近在研究反截屏技术,研究了一天,在网上找到一些资料,知道截屏软件一般使用 CreateCompatibleBitmap 和 BitBlt 等Windows API实现的。于是,我就想到两个方案去实现反截屏
方案:Hook 上述 API ,遇到这些API调用即拦截。
我使用 《Windows 核心编程》里面 22章 的 "22 LastMsgBoxInfoLib"实例代码进行改进,实现了一个APIHOOk的测试工程,该工程可以成功拦截到CreateCompatibleBitmap 等API的调用(全局,所有程序)。
但该方法存在一个致命问题,就是我发现除了截屏软件会使用这些API实现截屏外,我测试用到的非截屏GUI程序都受到影响。我对GDI编程不熟悉,但个人估计应该是因为GUI程序在生成图形界面的时候会用到上述API,所以会受到影响。
想问问各位大虾,截屏软件是不是真的使用上述API实现截屏功能,还没有其他的截屏API可用。像上述问题,应该如何解决。希望各位大虾给小弟指条明路。
另外:我在网上找到一个软件Snoop free 的,我拿了截屏软件测试了一下,的确可以防得住。其做法是在程序启动的时候询问用户是否放行截屏软件。个人估计它应该是检测软件中使用的API作出反应的,不知我的估计是否正确,如果正确它又是拦截什么API实现功能但又不影响GUI程序的。