Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
来源:互联网 发布:大数据要什么学历 编辑:程序博客网 时间:2024/06/16 07:40
1.数字图片使用类似与动画的方式显示,每次显示的是数字的一部分,当动态显示的时候人眼是可以分辨出具体数字的。但是截图的话就只能截取一部分,参考:
cups.cs.cmu.edu/soups/2007/posters/p147_lim.pdf
2.屏蔽系统按键:Print Screen 和 Alt + Print Screen,主要原理是注册热键的方式,参考:
http://www.vckbase.com/document/viewdoc/?id=1566
3.全局Hook,参考:
Screen Capture Library for Windows : http://gpalem.web.officelive.com/screencap.html
http://topic.csdn.net/u/20090914/00/70e6da83-906b-4db4-a3ee-d79dfd460bd6.html
这种方法不仅要Hook GDI方式的截图还有DirectX方式的截图,当然不排除还有其他方式的截图,例如:“Windows Media API for Capturing the Screen”。
所以这种方法实施起来甚是繁琐,第一要尽可能多地Hook相关API函数,但是你很难做到全面。另一方面稳定性,扩展性和维护性也不太好。
4.视频过滤驱动(Video filter drivers)。
相对于Hook来说可能更好一些,但是技术难度比较大。
http://search.codesoso.com/Record/ddf85213-2bdf-bfae-5626-15646cefdf09_446750_1.html
http://www.codeproject.com/Articles/Toby-Opferman
Driver Development Part 6: Introduction to Display Drivers
5.ShadowSSDT
经过体验“卡巴斯基2012”版本的虚拟键盘功能,发现其有防截屏功能,当虚拟键盘开启时截取的屏幕是全黑色的。如果虚拟键盘未开启,则截图时截不到卡巴斯基的主界面。
使用xuetr分析,卡巴斯基并没用设置“Video filter drivers”,而是使用了ShadowSSDT做的防截屏,以下是驱动klif.sys的ShadowSSDT:
[code=C/C++]
[XueTr][ShadowSSDT]: 21
序号 函数名称 当前函数地址 Hook 原始函数地址 当前函数地址所在模块
13 NtGdiBitBlt 0xB1EE8508 ssdt hook 0xBF809F5F C:\WINDOWS\system32\DRIVERS\klif.sys
227 NtGdiMaskBlt 0xB1EE85DE ssdt hook 0xBF8384E0 C:\WINDOWS\system32\DRIVERS\klif.sys
237 NtGdiPlgBlt 0xB1EE864E ssdt hook 0xBF943B92 C:\WINDOWS\system32\DRIVERS\klif.sys
292 NtGdiStretchBlt 0xB1EE8572 ssdt hook 0xBF8738A3 C:\WINDOWS\system32\DRIVERS\klif.sys
307 NtUserAttachThreadInput 0xB1EE8BD6 ssdt hook 0xBF8F7976 C:\WINDOWS\system32\DRIVERS\klif.sys
312 NtUserBuildHwndList 0xB1EE86B6 ssdt hook 0xBF835EA1 C:\WINDOWS\system32\DRIVERS\klif.sys
323 NtUserCallOneParam 0xB1EE84D4 ssdt hook 0xBF801067 C:\WINDOWS\system32\DRIVERS\klif.sys
378 NtUserFindWindowEx 0xB1EE82C8 ssdt hook 0xBF8B128C C:\WINDOWS\system32\DRIVERS\klif.sys
383 NtUserGetAsyncKeyState 0xB1EE80D6 ssdt hook 0xBF8491D4 C:\WINDOWS\system32\DRIVERS\klif.sys
414 NtUserGetKeyboardState 0xB1EE83D6 ssdt hook 0xBF852661 C:\WINDOWS\system32\DRIVERS\klif.sys
416 NtUserGetKeyState 0xB1EE8122 ssdt hook 0xBF820DEC C:\WINDOWS\system32\DRIVERS\klif.sys
460 NtUserMessageCall 0xB1EE821A ssdt hook 0xBF80EDEB C:\WINDOWS\system32\DRIVERS\klif.sys
475 NtUserPostMessage 0xB1EE816E ssdt hook 0xBF808934 C:\WINDOWS\system32\DRIVERS\klif.sys
476 NtUserPostThreadMessage 0xB1EE81C2 ssdt hook 0xBF8B3C60 C:\WINDOWS\system32\DRIVERS\klif.sys
490 NtUserRegisterHotKey 0xB1EE8C90 ssdt hook 0xBF8ADC84 C:\WINDOWS\system32\DRIVERS\klif.sys
491 NtUserRegisterRawInputDevices 0xB1EE835E ssdt hook 0xBF915CEB C:\WINDOWS\system32\DRIVERS\klif.sys
502 NtUserSendInput 0xB1EE827A ssdt hook 0xBF8C3117 C:\WINDOWS\system32\DRIVERS\klif.sys
529 NtUserSetParent 0xB1EE8A88 ssdt hook 0xBF8795B5 C:\WINDOWS\system32\DRIVERS\klif.sys
549 NtUserSetWindowsHookEx 0xB1EE8026 ssdt hook 0xBF852721 C:\WINDOWS\system32\DRIVERS\klif.sys
552 NtUserSetWinEventHook 0xB1EE807E ssdt hook 0xBF8F0099 C:\WINDOWS\system32\DRIVERS\klif.sys
576 NtUserUnregisterHotKey 0xB1EE8DB0 ssdt hook 0xBF912A64 C:\WINDOWS\system32\DRIVERS\klif.sys
[/code]
其中还有一些防键盘记录的,与截屏有关的是:NtGdiBitBlt,NtGdiMaskBlt,NtGdiPlgBlt,NtGdiStretchBlt。NtUserBuildHwndList,NtUserFindWindowEx用来隐藏窗口,使得三方程序查找窗口时找不到被保护的窗口,也是与防截屏功能有关的。
原文地址: http://www.zhizihua.com/blog/post/501.html
- Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
- Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
- Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
- Symbian截屏以及前后台切换(Screen capture)(
- Symbian截屏以及前后台切换(Screen capture)
- Screen Capture
- capture screen
- anti-spam, smart screen.
- How to capture screen to bitmap如何实现截屏(Symbian)
- iPhone Screen Capture Revisited
- Capture a Screen Shot
- screen capture using CGDisplayStreamCreateWithDispatchQueue
- Linux screen capture
- !Quick Screen Capture v3.0.0
- capture windows/screen using GDI+
- Android: How to Capture Screen in Gingerbread(2.3中实现截屏)
- Android: How to Capture Screen in Gingerbread(2.3中实现截屏)
- Android: How to Capture Screen in Gingerbread(2.3中实现截屏)(续)
- SVN版本控制---zhang
- Maven实战学习笔记(聚合和继承)
- Qt插入数据库错误
- 2014 Apple WWDC
- 百度下拉框对我们seoer的启示不容忽视
- Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
- 大数的加减运算
- hdu 1711 Number Sequence
- linux tee命令
- usb协议深入理解
- poj_1459 Power Network(多源多匯最大流)
- Linux 服务器 文件同步
- HDU 3435A new Graph Game(网络流之最小费用流)
- Cocos2d-x v3.x官方文档]文本标签(Label) 分享0