基于 RustDesk 的 HVNC
2023-11-21 21:37:40 Author: 0x4d5a(查看原文) 阅读量:67 收藏

rustdesk-hvnc

自从看了 Nighthawk HVNC 功能[1] 的博客,很感兴趣。最近通过魔改 rustdesk,实现了一个实验性质的 rustdesk-hvnc,在此分享。

实验性质,BUG 很多

https://github.com/EddieIvan01/rustdesk-hvnc

用法很简单,编译出客户端,通过 ./rustdesk-hvnc IP_OF_RUSTDESK_SERVER CONNECT_ID 启动,然后使用原版的 rustdesk 连接即可。argv[1] 是自建的 relay server 地址,argv[2] 是连接的 ID,密码任意。

agent 做过裁剪,无窗口运行。聊天框可以创建进程,进程会启动在隐藏的桌面。

原理

对于截屏,由于Windows 在同一时刻只能有一个活动桌面,所以 HVNC 需要枚举隐藏桌面的每一个窗口,向其发送 WM_PAINT 消息,将像素拷贝到 screen DC 对应区域,所以对于不处理 WM_PAINT 消息的窗口,无法截图

键鼠同理,HVNC 需要确定鼠标落在隐藏桌面的哪个窗口,然后发送 WM_NCHITTEST 消息去测试鼠标落在窗口内的哪个区域,再进行后续处理,例如关闭按钮、最大化、移动窗口,如不在特殊区域则发送键鼠消息

控制端

被控端

References

[1] Nighthawk HVNC 功能: https://www.mdsec.co.uk/2022/11/nighthawk-0-2-1-haunting-blue/


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MjU2NTc1Mg==&mid=2247483790&idx=1&sn=59791cad085ad9b097f1582c003e51d8&chksm=c03d6019f74ae90f796fcf72d134852a2cba225d97115b49f7e27c0c4b633b9d0b6ebf9d2d9e&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh