好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 592618243 于 2020-12-2 19:43 编辑
前言
该文章将邀请世界第一的编程语言-易语言来为我们演示。
吹逼
随着好玩的游戏越来越多,盖佬人才越来越突出,好玩的游戏+一款牛逼的WG成为了一个老挂逼的日常生活。鲁迅说过‘有乐同享,有难同当‘,于是乎,老挂逼们开始投身于直播行业,以‘高超’的技术,来向大众传递游戏胜利的快乐。为了防止大众偷学到自己的技术,一种技术诞生了-反截图。
啥叫反截图
顾名思义,就是让你截取不到你想截取的图片呗。这时聪明人又来了,那我直接把截图函数全部干掉不就完事了吗?
ennnnn你行你上。
为什么要反截图 直播、装逼、防止一些有截图检测的游戏
实现一个简单反截图 这个简单啊,打钱就完事。
咳咳,开个玩笑。上才艺
看不懂没关系,会用就行。
这样就OK,然后咱们运行后看一下截图效果
我们发现,窗口变黑了。这是一个简单的反截图效果,虽然能反截图了,但是是个人都觉得这种反截图不靠谱。假设你正在用科技直播,观众全部就看着黑框了。而且,咱们自己都觉得这种反截图效果不行,那游戏公司还会傻吗?不给你一个套餐,难道留着回家过年吗。 那么问题来了,当前这个黑框是覆盖在我们窗口上面呢,还是他把窗口直接变成黑色。接下来开始探究。
探究反截图原理 那么我们能不能实现一个全透明的反截图效果呢,比如B覆盖在A上面,我们截图,只能截取到A,B就完全处于一个透明的状态。答案是肯定的。接下来我们来进一步研究一下,既然我们想让他透明,好办啊,我们给窗口设置一个透明。
运行起来之后,发现窗口透明了
那我们来重新截图试试看。
诶,我们发现刚刚那个反截图的效果,也变透明了。我们添加一个控件再运行截图看看效果。
我们发现,看不到按钮。经过这样的测试我们发现,SetWindowDisplayAffinity 这个函数之后所产生的黑框,并不是覆盖上去的,而是直接把窗口刷新成为黑色的,而且这种黑色的效果可以通过修改窗口透明度来控制黑色的可见度。
由此可知,一个新的反截图思路:给窗体一个透明度,这样就实现了全透明的反截图,
Ok.下面开始根据第一种方法实现反截图(嘴角开始上扬)。
优化反截图 其实在上面我们已经实现了全透明的反截图,只不过用的是易语言官方库的命令(易语言真是世界上最好用的语言呢),现在用API实现。
用这个函数设置就行,第一个参数句柄,第四个参数:1则用crKey,忽略bAlpha;2则用bAlpha,忽略crKey。这个函数干嘛的呢,就是设置窗口透明度的。
下面为了方便演示,我在窗口写了字,看看效果。
截图看一下效果
这样的话,就实现了一个简单的反截图。如果想要实现效果更好的,可以到我上面指出的帖子里看看实现方法。 下面是我将此技术运用在D3D透明绘制上
截图后
结束语 本篇文章只是探究一个低级的反截图,该反截图的原理也是我再某论坛看到的,虽说开源,但是却是调用DLL。凭着正义心驱使的我岂能让这种作为猖狂,直接扔进OD瞎操作,最后得知原理。
另外这种方法还能过OBS直播/录制等等,感谢@PlaneJun大牛的分享。 |
-
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|