基于 RustDesk 的 HVNC

admin 2023年12月26日08:08:42评论68 views字数 649阅读2分9秒阅读模式

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 消息去测试鼠标落在窗口内的哪个区域,再进行后续处理,例如关闭按钮、最大化、移动窗口,如不在特殊区域则发送键鼠消息


控制端

基于 RustDesk 的 HVNC

被控端

基于 RustDesk 的 HVNC

References

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

原文始发于微信公众号(0x4d5a):基于 RustDesk 的 HVNC

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月26日08:08:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于 RustDesk 的 HVNChttp://cn-sec.com/archives/2234884.html

发表评论

匿名网友 填写信息