Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
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用来隐藏窗口,使得三方程序查找窗口时找不到被保护的窗口,也是与防截屏功能有关的。
Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏相关推荐
- Tiger Screen Capture(虎跃屏幕录制大师)
1.Tiger Screen Capture(录屏大师) 一款跨平台,小巧的录屏软件.支持多个平台,可显示录制实时内容. 2.功能 1.支持屏幕录制 2.支持麦克风,电脑声音录制 3.支持摄像头录制 ...
- 计算机一键黑屏,电脑快速黑屏软件(Black Screen)
Black Screen是一款电脑快速黑屏软件,能够一键将显示器快速黑屏和亮屏,可以自定义快捷,还有屏保壁纸显示功能哦!你也可以设置一张图片代替黑屏,一键切换为屏保. 软件特色 操作简单 1.让你的眼 ...
- android开发截屏代码,android截屏代码:C++实现
android截屏代码:C++实现 示例代码在: frameworks\base\services\surfaceflinger\tests\screencap\screencap.cpp /* * ...
- 笔记本电脑截屏怎么截_电脑的截屏与录屏
电脑的截屏与录屏 相信大家都知道 QQ的截屏和录屏快捷键:截屏:Ctrl+Alt+A录屏:Ctrl+Alt+S 这种方便快捷的方式非常受人欢迎,但是万一我们的电脑上没有下载或打开QQ,我们该怎么办呢? ...
- Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏, 截长图
最近在做一个关于截频的功能, 恰逢鸿洋大神分享了一篇相关的博客, 我使用之后觉得甚是好用, 所以也整理了一下,以供学习. 在做分享功能的时候,需要截取全屏内容还有截长图,一屏展示不完的内容,一般我们会 ...
- linux删除screen命令,Linux screen命令
screen是什么? Screen是一个全屏窗口管理器,它可以在多个进程之间多路复用一个物理终端.Screen中有会话的概念,用户可以在一个会话中创建多个screen窗口,在每一个screen窗口中就 ...
- ABAP:区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
1,CALL SCREEN XXXX将在Screen调用栈(CALL STACK)上面添加一层调用(进栈),调用XXXX的PBO和PAI,如果XXXX的Next Screen不为0,那么将继续其Nex ...
- 区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
1,CALL SCREEN XXXX将在Screen调用栈(CALL STACK)上面添加一层调用(进栈),调用XXXX的PBO和PAI,如果XXXX的Next Screen不为0,那么将继续其Nex ...
- 怎么抓取屏幕截图计算机考试时间,定时抓屏快照(电脑截屏工具)V4.8 最新版
定时抓屏快照(电脑截屏工具)是一款非常实用的电脑屏幕定时抓拍软件.想定时截取电脑屏幕?定时抓屏快照(电脑截屏工具)轻松帮助用户.马上要放假了,家长一定很担心小孩最新的上网情况,看是在电脑上玩什么,用户 ...
最新文章
- Technology Document Guide of TensorRT
- day17 - 动态内存的分配初步理解
- 第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
- react使用引入svg的icon;svg图形制作
- 在html中2em是多少px,在css设置单位px、em、rem哪个更好?
- 「权威发布」2019年大学生电子设计竞赛获奖名单
- srs 服务关闭命令_【经验总结】如何做到网络版工作站与服务器时间同步?
- Nginx配置文件详细说明(转)
- ng-repeat循环出来的部分调用同一个函数并且实现每个模块之间不能相互干扰
- 数据产品-数据分析和可视化工具Excel基础使用
- [Unity] 无脚本导出 Texture 为 PNG
- matlab 平滑曲线连接_【仪光学习】技能分享 | 前方高能:如何用Matlab轻松实现数学建模...
- 数据安全治理方法导论
- 赛门铁克symantec的安装与卸载-附下载地址(本人亲测)
- 解决idea代码无故爆红问题
- Leetcode 1348:推文计数
- Java动态代理的原理
- 互联网IT就业市场,你要说最有市场的一定是它,linux内核视频教程全套
- 注解与反射 - 注解
- 计算机领悟英语怎么说,领悟用英语怎么说_领悟英文怎么说_领悟英文翻译_趣词词典...