V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Inn0Vat10n
V2EX  ›  问与答

windows 软件防截屏?

  •  
  •   Inn0Vat10n · 2022-02-19 15:00:32 +08:00 · 6299 次点击
    这是一个创建于 1015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发现在用的某个 windows 客户端软件有防截屏功能,无论是 QQ 的截屏还是系统自带的 PrtSc, 一截,软件界面会自动变黑,这个是怎么实现的?有什么办法可以绕过?
    30 条回复    2022-02-22 20:28:38 +08:00
    duke807
        1
    duke807  
       2022-02-19 15:11:15 +08:00 via Android
    把 windows 安裝在 linux 系統的虛擬機裏面,在 linux 系統環境截圖試試。

    同樣的方法,可以破解 QQ 的登陸密碼的鍵盤保護,可以監控到登錄密碼,我親自試過可以。
    Inn0Vat10n
        2
    Inn0Vat10n  
    OP
       2022-02-19 15:17:43 +08:00
    @duke807 我只是想分享截图内容给朋友,为了这个装虚拟机其实不如我直接手机拍照了。。有点好奇这个是怎么实现的
    duke807
        3
    duke807  
       2022-02-19 15:34:00 +08:00 via Android
    那你拍照好了

    應該是操作系統有截圖事件通知吧

    用虛擬機的話,外部操作系統的截圖通知不會傳遞到虛擬機內部

    虛擬機內部的各種鍵盤等保護也沒法保護到外部虛擬機

    然後順便說一下,很多網站不允許複製粘貼,這種限制對 linux 無效,因為 linux 獨有鼠標中鍵粘貼。

    反正,linux 對開發最友好,對小白也最友好,暫時不友好的是對遊戲玩家,但適配 linux 的遊戲大廠也越来越多。未來是 linux 的,早換早省事。
    duke807
        4
    duke807  
       2022-02-19 15:36:01 +08:00 via Android
    fix typo: 虛擬機內部的各種鍵盤保護等機制也沒法保護到外部主系統
    cjpjxjx
        5
    cjpjxjx  
       2022-02-19 15:59:08 +08:00
    远程桌面 < 虚拟机 < 采集卡 < 拍照
    BreadKiller
        6
    BreadKiller  
       2022-02-19 16:08:52 +08:00
    我猜可能是监听电脑的剪贴板,如果是图片的话就自动给你替换成空白。
    你可以试试在画图软件里打开一张图片,然后用框选工具框选之后复制,如果不能复制可能就是我猜的这个原因了。
    BreadKiller
        7
    BreadKiller  
       2022-02-19 16:11:54 +08:00
    我没看清楚楼主的描述~软件变黑的话应该就是别的手段了
    asmmt
        8
    asmmt  
       2022-02-19 16:16:41 +08:00   ❤️ 1
    hook 了 windows 截屏 api ,检测到截屏时先把界面变黑。
    Telegram
        9
    Telegram  
       2022-02-19 16:42:42 +08:00
    Netflix 的防截屏就类似,很牛批。
    ColorfulBoar
        10
    ColorfulBoar  
       2022-02-19 17:01:34 +08:00   ❤️ 2
    @Inn0Vat10n 这位 linux 大师其实是建议你把 windows 删了换成 linux ,再在 linux 里面装虚拟机然后在 linux 下面的虚拟机里面装 windows……对就为了截个图。

    ---

    另外真的没懂为啥 2022 年了 Linux 狂信徒反而越来越疯了,居然连绕开网页复制限制都能给吹成 Linux 特色功能,至于推荐新手和(未来的)游戏玩家换 Linux 更是脸都不要了。有兴趣的可以翻翻其历史记录,特别搞笑,一位完美的 Linux-hacker syndrome 患者。
    duke807
        11
    duke807  
       2022-02-19 17:10:35 +08:00 via Android
    @ColorfulBoar 你誤解了,我瘋狂的推廣 linux 就是為了讓你們討厭 linux ,不然的話,大家都精通 linux 了,linux 就不值錢了,對於小白不容易中毒等好處也就沒有了。
    elfive
        12
    elfive  
       2022-02-19 17:32:08 +08:00 via iPhone   ❤️ 1
    记得早些年有些用 OpenGL 的程序就是这样的,截屏直接是黑的,试试用 Fraps 截图,应该是可以截到的
    mgrddsj
        13
    mgrddsj  
       2022-02-19 17:40:53 +08:00 via Android
    @Telegram Netflix 的不太一样,那是通过 DRM 保护的媒体内容。一般程序应该是不会用 DRM 的吧,否则在 DRM 实现不好的电脑上就显示不了内容了。我估计楼主这个程序是用别的方法实现的。
    ljsh093
        14
    ljsh093  
       2022-02-19 17:58:09 +08:00
    DRM ?
    andytao
        15
    andytao  
       2022-02-19 18:02:04 +08:00
    感觉开发一个这样的工具有 [钱途] 呀
    crab
        16
    crab  
       2022-02-19 18:05:32 +08:00
    用这个 API 就可以了。
    SetWindowDisplayAffinity
    geelaw
        17
    geelaw  
       2022-02-19 18:39:51 +08:00   ❤️ 2
    @ColorfulBoar #10 🤔 我是不是识别出来你是谁了?

    @mgrddsj #13 DRM 防截图在 Windows 上就是 app 告诉 Windows 在截图得时候阻碍自己被截图,即 @crab #16 说的那个 API ,就行了。并且不存在“DRM 实现不好得电脑”,只存在“DRM 实现不好的软件”。

    远程桌面可以绕过这个 API 的限制,和虚拟机一样,在客户端(宿主机)截图的时候,远程桌面客户端(虚拟机程序)不会通知服务器(客机)。我并不知道 Windows 8 以来用来测试的 nested session 版远程桌面(即提供 Windows 应用商店应用开发时模拟器测试的基础设施)是否也能,不妨一试。
    ysc3839
        18
    ysc3839  
       2022-02-19 19:18:28 +08:00 via Android   ❤️ 1
    整个窗口变黑的情况,大概率是使用 SetWindowDisplayAffinity

    如果想解除限制,或者给某个窗口加上限制,我之前写过一个工具 https://github.com/ysc3839/NoScreenCap 通过注入代码到目标进程来进行控制,不过这个方案有一定风险,可能会被目标程序检测到,认为是作弊、外挂等。另外我也没给这个项目发布编译好的 exe ,所以要用的话需要自己编译。
    Buges
        19
    Buges  
       2022-02-19 20:00:50 +08:00 via Android   ❤️ 1
    @ColorfulBoar X selection 确实能算”Linux 特色功能“,至于为什么能绕过限制,当然还是因为用的人少。
    win11 都开始强制要求 ms 账号才能用了,我觉得 linux+win 虚拟机确实是最好的解法。至于(未来的)游戏,别忘了 valve 和显卡直通。
    ysc3839
        20
    ysc3839  
       2022-02-19 21:20:00 +08:00
    @geelaw 视频 DRM 用的是别的接口,不是 SetWindowDisplayAffinity ,前者可以实现截图时仅仅视频区域变黑,且叠加在视频区域上方的东西也能正常显示,后者只能让整个窗口变黑。
    charlie21
        21
    charlie21  
       2022-02-19 22:46:12 +08:00 via iPhone
    try using win + g to record screen then replay it taking a screenshot
    chaliebro
        22
    chaliebro  
       2022-02-19 23:49:21 +08:00
    謝邀,經常在使用視頻軟件播放錄屏時,就會有防錄屏保護,這個時候可以嘗試系統自帶的 win+g 截屏,如果此方法不可用,可以下載電腦對應顯卡的驅動,安裝後會有一些顯卡驅動級別的截屏,可以突破截屏限制。
    Inn0Vat10n
        23
    Inn0Vat10n  
    OP
       2022-02-20 01:40:34 +08:00
    上面说的 win+g 我也试了,不出乎预料的,视频一片漆黑。。。
    ColorfulBoar
        24
    ColorfulBoar  
       2022-02-20 01:59:27 +08:00
    @geelaw 当然~目前只有我在饲养这只奇妙的猪头鹅,所以你在任何地方看到它背后都是我(这饲养员)。不过最近在尝试于不同地方扮演精神上有共同点但具体行为不太一样的角色,照理来说也应该反馈到视觉形像上,现在有了一些灵感但还得等有时间的时候把它们画出来(这个物种开发空间还蛮大的)。另外计划里这里这只会比别的地方更有攻击性和喜欢整蛊(虽然还在探索合适的尺度与姿势)

    @Buges 我感觉一般不让复制的地方也不让你选择,并不需要特意针对 Linux ,这不还是没用么……而且想绕开网页选择 /复制 /右键等限制的话简单又跨平台的方案怎么想都是装个插件。后面就完全没看懂了,是不是只能用微软帐号登录好像没什么本质影响(比如如果担心 windows 想干什么坏事那允许用本地帐号登录也能干),而且虚拟机里面装 Win11 能不用微软帐号吗(纯疑问,我真没试过)?以及 valve 和显卡直通是什么意思,印象里 nv 做过个类似的东西但好像和 valve 没关系……如果是后者那种的话,感觉也不能拯救 Linux 上的游戏体验,依然是一大坨不能玩 /有奇奇怪怪的 bug ,费这么大功夫获得一个严格劣于 windows 上的游戏体验到底是图个啥
    Cu635
        25
    Cu635  
       2022-02-20 11:12:55 +08:00
    @duke807
    为啥用繁体字?
    Buges
        26
    Buges  
       2022-02-20 14:54:30 +08:00 via Android
    @ColorfulBoar 不少地方确实可以选中啊,只是监听劫持了复制事件。后面说的是微软越来越过分,云服务深入渗透,从隐私和自由的角度考虑 win 系统越来越不适合主力使用了。至于游戏,valve 这些年来一直在努力改善( proton 、steam deck 等),再加上显卡直通的不断完善( nv 消费级显卡驱动解禁、looking glass 等方案)。考虑到很多游戏的反作弊组件根本就是木马,用虚拟机也是最合适的。
    duke807
        27
    duke807  
       2022-02-20 16:28:52 +08:00 via Android
    @Cu635 因為我是非主流
    ColorfulBoar
        28
    ColorfulBoar  
       2022-02-20 18:11:02 +08:00
    @Buges 是有可以用这种办法绕开限制的网站,但还有一批是不行的,并且越是有意禁止用户复制的地方越是会顺手把选择一起限制了。所以除非为了特意展示 Linux 特色只访问前一类网站,否则不管系统能不能自动绕开这种限制最后都是要靠插件或者其他奇技淫巧(比如我在测试这事的时候听说的百度文库神奇的翻译法)来解决问题的,那系统本身能不能绕开这个限制也就不重要了。
    --
    从我目前有的信息看 Steam Deck 完全是搞笑的产品。这货体积重量都比本世代唯一掌机 Switch 肥了一大截,输入设备也很怪异(奇怪的摇杆位置,不知道在想啥的触摸板),至于 PC 游戏直接搬过来不适配最后 UI 尺寸大半也是个灾难,再加上跟其他主机比价格昂贵,没人给它做优化性能也一般(流畅跑 PC 游戏需要降画质 /动态分辨率)……它目前的声誉完全是被粉丝滤镜扭曲的:我在所有地方都能看到喷 Switch 屏幕边角料只有 720p 的,但同样的地方只要提到 Steam Deck 就没几个人说那块同一分辨率的屏幕烂了,最离谱的是屏幕色域,测出来 68%sRGB 左右,这已经不是人类能想出来的设计了,我都不记得上次在主流设备上看到这么烂的屏幕是哪一年了,而这屏幕依然在 LinusTechTips 的评测中得到了没啥问题的评价(如果他不是色盲,那建议下次评测时要点脸;如果是色盲,建议提前声明一下)。现在就这么个设备,还面临产能极度不足的情况(已经跳票一次了),我没有任何理由相信它会对目前游戏市场有影响( linux 用户大概占 steam 玩家的 1%,不知道 steam deck 销量能不能赶得上 switch 的 1%,作为参考:PSV 这种妥妥的失败品搞得索尼掌机业务再起不能的存在还能有对手的五分之一左右呢)。
    --
    我已经很久不玩有腾讯那种反作弊的游戏了,不过就算哪天要玩,我觉得为了针对它的话在 windows 里面开个虚拟机也是一样的,并没有任何理由选择 linux 下面的虚拟机,就跟 OP 的问题一个道理。
    --
    游戏是个很复杂的东西,在目前的项目管理水平下即使是第一方独占游戏只需要针对一个平台做优化依然会产生各种灾难性的 bug (比如展示 PS5 性能的大作瑞奇与叮当闪退+破坏主机数据),放到碎片化程度远大于此的 linux 上,再配合上没开发利索的各种虚拟化技术和奇奇怪怪的驱动问题……我是去玩游戏的还是去玩 bug 的?没有游戏玩家会去花这么大功夫来获得一个严格劣于原生平台的体验,没有人玩开发者也不会针对这个平台做优化 /测试,结果就是体验差,更没人玩,我看不到什么 linux 能打破这个恶性循环的希望,它实际效果还不如 macOS 这个同样游戏体验没救了的系统(虽然理论上其实是要好一些的)。
    --
    关于隐私和自由我还是长话短说吧,全展开我就不要睡觉了……对于前者,靠开源保障隐私约等于靠量子密码学保护通信安全。出问题都是在最脆弱的那一环(而这一环通常不是在技术上),而我在评估了我最可能因为隐私泄露遭受的风险后的结论是,对我来说最脆弱的地方远远不是来自于操作系统,所以这个理由对我并不成立。举个例子,我觉得我会因为政治倾向遇到一定的风险,那么比起我的某些不公开的想法被 windows 给公开出来导致我惹上什么麻烦,更可能发生的事情是开源社区“进步”到在 license 里或者采用其他技术手段禁止我这样的人使用(当然这个概率也很小,但既然我评估为比前者高,那对于我来说就可以支持前面的观点了)。
    对于后者,在我理解里工具通过允许人做更多的事情来增进人类的自由,然而我在很多 linux 爱好者那里看到的东西是截然相反的:为了生活在 linux 下反而弄得自己束手束脚的,这也不能干那也得找劣化替代品,考虑到我的确有在类似的环境下观察到我确实抑制了自己一些尝试崭新东西想法,我最终开始怀疑 linux 真的有增进人的自由么?另一方面,考虑一个普通用户,面对 linux 的时候从社区得到的反馈很可能是“我太菜了,用不来这个系统”,然后对尝试新东西的热情遭到一次打击,缩回到更傻瓜的产品构成的空间里面去,这个过程对比一个能让用户瞎点乱玩不会出太大事的环境,那里或许还能给用户一点尝试新东西的信心,这么想的话,考虑到这种用户的庞大基数造成的影响,我也怀疑自由到底是增加了还是减少了。
    虽然地方很小不会继续写了,但是我觉得对于隐私与自由有诸多技术以外的更值得考虑的东西(比如它们与商业的相互作用),而这些都不是开源可以激励人去思考的,在考虑了这些东西之后,我不觉得在当下 linux 对于促进我拥有更多的它们有帮助(更不可能为此牺牲掉我现在喜欢做但在 linux 下根本做不了的东西),也不会建议别人这么做。
    Buges
        29
    Buges  
       2022-02-20 21:05:00 +08:00 via Android
    @ColorfulBoar 确实有些只劫持复制事件,所以恰好被 X selection 绕过,不过这些都是小问题,遇到这种的话也不会去整什么插件,直接 f12 从 html 里复制就完事。
    steam deck 在 linux 社区确实一片好评,毕竟促进了 linux 平台的游戏生态嘛。你说的其他的我不清楚,关于平台方面,基本上现代的游戏引擎都跨平台了,linux 下图形驱动完全没有问题,vulkan 也是广泛使用的标准,除了 dxvk 可能有些 bug 。显卡直通给虚拟机,Windows 目前应该还不行。
    win11 强制要求 ms 账号,意味着这个系统都不可以离线使用了。这里说的自由是指自由软件的自由,某一天 win/mac/ios/国产 Android 全都内置反 zha 中心,你就知道自由软件的意义了。
    secondwtq
        30
    secondwtq  
       2022-02-22 20:28:38 +08:00
    网页复制这种东西不是点一个 Disable JavaScript 就过去了么 ...
    另外我还真碰到不少可以选择不能复制的 ...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.