首页
社区
课程
招聘
[原创]win10自带截图和草图的截图流程
发表于: 2023-3-7 16:34 5490

[原创]win10自带截图和草图的截图流程

2023-3-7 16:34
5490

svchost.exe 创建ScreenClippingHost.exe和RuntimeBroker.exe
基础流程:ScreenClippingHost.exe 进程将截图数据存储到内存中,然后调用应用程序通信 API,将截图数据发送给 RuntimeBroker.exe 进程。RuntimeBroker.exe 进程接收到截图数据后,将其保存到屏幕截图文件夹中。

 

在这个过程中,ScreenClippingHost.exe 作为一个 UWP 应用程序,拥有访问图形硬件和输入设备的权限,可以进行高效的截图操作。
而 RuntimeBroker.exe 作为一个受限制的进程,只能执行一些受限的任务,如保存截图数据到文件系统中。
通过应用程序通信 API,ScreenClippingHost.exe 和 RuntimeBroker.exe 之间实现了数据的安全传输和处理。

 

1.ScreenClippingHost.exe是如何截图的?
ScreenClippingHost.exe具体利用D3D11进行截图的(也有hook其他可能进行截图的dll,比如dwmapi.dll,相关截图的api没有走)

 

HRESULT D3D11CreateDevice(
[in, optional] IDXGIAdapter pAdapter,
D3D_DRIVER_TYPE DriverType,
HMODULE Software,
UINT Flags,
[in, optional] const D3D_FEATURE_LEVEL
pFeatureLevels,
UINT FeatureLevels,
UINT SDKVersion,
[out, optional] ID3D11Device ppDevice,
[out, optional] D3D_FEATURE_LEVEL *pFeatureLevel,
[out, optional] ID3D11DeviceContext
ppImmediateContext
);
1.先通过hook D3D11CreateDevice 然后获取到ID3D11DeviceContext指针,然后在hook这张虚表,里面实现截图的api如下:
ID3D11DeviceContext::CopyResource

 

使用 GPU 将源资源的全部内容复制到目标资源。(ID3D11DeviceContext.CopyResource)

 

ID3D11DeviceContext::CopySubresourceRegion

 

将区域从源资源复制到目标资源。(ID3D11DeviceContext.CopySubresourceRegion)

 

通过hook虚表之后,当截图的时候调用了这zpi之后,在返回false即可实现限制截图。

 

流程上是否正确,各位可以验证一下,我也是初学者,对与不对的,可以评论留言探讨一下。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2023-3-7 16:38 被ThreadEx编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//