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用来隐藏窗口,使得三方程序查找窗口时找不到被保护的窗口,也是与防截屏功能有关的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity中链接字符串和变量显示_理解Unity中的优化(六):字符串和文本

字符串和文本:在Unity项目中,处理字符串和文本经常会产生性能问题。在C#中,字符串是不变的。任何对字符串的操作都会重新分配新的字符串,这个代价是非常昂贵的。如果在多重循环中重复地执行字符串连接操作,就会造成性能…

Bean的scope属性

1、singleton(默认值):单列对象,被标识为单例的对象在spring容器中只会存在一个实例 测试如下: 我们创建一个User类: public class User {private String name;private int age;public User() {System.out…

Oracle 索引扫描的五种类型

之前在讨论CBO和RBO的时候提到了索引扫描的几种类型。 Oracle Optimizer CBO RBO http://blog.csdn.net/tianlesoftware/archive/2010/08/19/5824886.aspx Oracle 索引 详解 http://blog.csdn.net/tianlesoftware/archive/2010/03/05/5347098.aspx Oracle Explain Plan http:/…

VS中标志寄存器表示

溢出标志OF(Over flow flag) OV(1) NV(0) 方向标志DF(Direction flag) DN(1) UP(0) 中断标志IF(Interrupt flag) EI(1) …

mysql修改表的结构_MySQL修改表结构

我们在修改表字段类型和约束条件的时候,如果表中的字段已经有值了,但是你修改的这个类型和字段里边的值不匹配是不允许修改的,就比如说你当初设置字段的时候,字段的值是允许存空值,并且字段里边已经存储空值了&#xf…

导入其他spring模块配置

列如下图中有两个spring的配置文件&#xff0c;我们想把上面的配置文件导入到下面的文件中去&#xff0c;该如何操作&#xff1a; 打开下面的配置文件&#xff0c;配置属性import,在import的resource配置上面配置文件的路径就可以了&#xff0c;如下&#xff1a; <import …

vs2019编写Linux c/c++项目

最近一直在阅读ovs的源码&#xff0c;看到用户态代码的时候&#xff0c;需要对用户态的代码进行调试&#xff0c;一开始想直接使用linux中的GDB进行调试&#xff0c;但是ovs的工程太过于复杂&#xff0c;从网上找了些文章&#xff0c;发现vs2017能够支持linux c程序的调试&…

mysql workbench 6.2_MySQL Workbench 6.2.4 下载 因为移动网络打不开官方也可能是国内网络问题 备用自己...

linux下好用的mysql gui 不多啊&#xff0c;除非在wine下 不太习惯phpmyadmin除了这个貌似在linux的就不多了&#xff0c;这里就用官方的管理工具吧win版本&#xff1a;http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.2.4-win32.msihttp://dev…

spring属性注入的set方法注入

1、值注入 创建我们要使用的User类&#xff1a; package cn.it.bean;public class User {private String name;Overridepublic String toString() {return "User [name" name ", age" age "]";}private int age; // private Car car; // /…

MySQLdb安装的错误说明

1、从http://www.codegood.com/上下载到国外有人编译好的&#xff0c;自己就免去这一环节 2、import MySQLdb时出现如下错误&#xff1a; Warning (fromwarnings module): File "C:\Python26\lib\site-packages\MySQLdb\__init__.py", line 34fromsets importImmuta…

excel oledb mysql_OLEDB操作Excel

使用OLEDB操作Excel 的方法OleDbConnection conn null;try{//fileName 表示要操纵的Excel的文件路径&#xff0c;如果excel不存在&#xff0c;现创建它&#xff0c;可以通过模版文件复制创建。string strConn;strConn "ProviderMicrosoft.Jet.OLEDB.4.0;" "Da…

系统蓝屏的几种姿势

前言 在 蓝屏&#xff08;BSOD&#xff09;转储设置&#xff0c;看本文就够了&#xff01; 这篇文章里比较详细的介绍了蓝屏转储设置。做好设置后&#xff0c;我们就可以在需要的时候使系统蓝屏了。这样我们就可以拿到一份系统转储&#xff0c;供我们分析问题了。本文介绍几种可…

Java基础:int和Integer的区别

1、基本使用对比&#xff1a; &#xff08;1&#xff09;&#xff1a;Integer是int的包装类&#xff1b;int是基本数据类型&#xff1b; &#xff08;2&#xff09;&#xff1a;Integer变量必须实例化后才能使用&#xff1b;int变量不需要&#xff1b; &#xff08;3&#xff…

nginx lua mysql 性能_深入浅出 nginx lua 为什么高性能

最近很多人问我nginx lua的优势是什么&#xff1f;为什么&#xff1f;一、同步和异步、阻塞和非阻塞如果要说清楚这个问题首先要了解&#xff1a;同步和异步、阻塞和非阻塞的关系同步&#xff1a;php、java的正常代码都是同步执行的异步&#xff1a;javascript的回调函数就是异…

我们的生命,不因别人的喜欢而存在

我们的生命&#xff0c;不因别人的喜欢而存在 过去咱们中国人讲的是“路遥知马力&#xff0c;日久见人心”“人不可貌相&#xff0c;海水不可斗量”&#xff0c;比较注重的是心灵美。大家都在一个村庄住着&#xff0c;谁是个什么人&#xff0c;彼此心里都有数。生活节奏慢&…

RtlAdjustPrivilege() 提权函数

RtlAdjustPrivilege(SE_DEBUG_NAME,1,0,NULL);这玩意是在 NTDLL.DLL 里的一个不为人知的函数,MS没有公开,原因就是这玩意实在是太NB了,以至于不需要任何其他函数的帮助,仅凭这一个函数就可以获得进程ACL的任意权限! 先来看看这个函数的定义(Winehq给出)&#xff1a; NTSTATUS …

求两个数字的乘积,如果大于0,说明两个数字同号,如果小于0,说明两个数字异号,如果等于0,说明其中一个是0

学了java基础东西&#xff0c;就写了这个编程&#xff0c;求两个数字的乘积&#xff0c;如果大于0&#xff0c;说明两个数字同号&#xff0c;如果小于0&#xff0c;说明两个数字异号&#xff0c;如果等于0&#xff0c;说明其中一个是0 首先程序要求我们输入两个数字&#xff0c…

mysql gtid 开启失败_mysql开启GTID跳过错误的方法【转】

1、数据库版本MySQL> select version()-> ;-------------------------------------------| version() |-------------------------------------------| 5.7.17 |------------------------------------…

处理机流水线------经典五段流水线

文章是在我遇到这部分问题时查找的所有感觉挺好的内容的整合&#xff08;全部是转载的&#xff09; 流水线基础理论就不加了&#xff0c;最新的处理器流水线处理的机制也没有&#xff08;一般以用不到&#xff09;&#xff0c;想了解去随便找个芯片厂商官网下个手册自己查。 这…

mysql 复制用户_MySQL修改复制用户及密码

在生产环境中有时候需要修改复制用户账户的密码&#xff0c;比如密码遗失&#xff0c;或者由于多个不同的复制用户想统一为单独一个复制账户。对于这些操作应尽可能慎重以避免操作不同导致主从不一致而需要进行修复。本文描述了修改复制账户密码以及变更复制账户。 1、更改复制…