红队专题-从零开始VC++远程控制软件RAT-C/S-[2]界面编写及上线

本文主要是介绍红队专题-从零开始VC++远程控制软件RAT-C/S-[2]界面编写及上线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

红队专题

  • 招募六边形战士队员
  • 1.课前回顾
    • unicode编码 字符串
  • 2.界面编程(下)
    • 对话框
      • 重载消息函数
      • 更改对话框同步更改
  • 3.服务端上线,下线,以及客户端的资源销毁(上)
    • 添加socket 变量
    • 添加 socket 消息
    • 填补config信息
    • 创建线程函数 并运行

招募六边形战士队员

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

1.课前回顾

#pragma comment(lib,“ws2_32.lib”)

unicode编码 字符串

_T 宏

多字节编码 ----字符集 知识点
项目属性

在这里插入图片描述
在这里插入图片描述

2.界面编程(下)

对话框

对话框资源


头文件 添加
private:CToolBar m_toolbar;CImageList m_imagelist;CStatusBar m_statusbar;CBitmap m_subbmp[6];CImageList m_mainicon;void UpdateMain(int port);UINT m_port;UINT m_max;UINT m_Sound;CRect m_rect;   //  矩形变量

在这里插入图片描述
在这里插入图片描述

重载消息函数

查看声明

在这里插入图片描述

 Dlgcpp里//  当客户端大小发生改变   计算差值  客户端内部控件 同步改变
void CExecN0vvDlg::OnSize(UINT nType, int cx, int cy)
{//  基类 对对话框改变CDialog::OnSize(nType, cx, cy);
// 类型等于最小化的 宏if(nType == SIZE_MINIMIZED){return;}// TODO: 在此处添加消息处理程序代码CWnd *pWnd;  // 窗口类指针pWnd = GetDlgItem(IDC_LIST1);     //获取控件句柄  条目id// 控件大小操作if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建{CRect rect,rect_l;   //获取控件变化前大小  eg  50x50GetClientRect(&rect_l);   // 客户区  控件大小pWnd->GetWindowRect(&rect);ScreenToClient(&rect);rect.right = cx;  // 把控件大小变换//rect_l 变化前   rect.bottom= rect.bottom + (rect_l.bottom - m_rect.bottom);pWnd->MoveWindow(rect);//设置控件大小//  重设状态栏  置底RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);}/*else{delete pWnd;}*/GetClientRect(&m_rect);//  还是记录初始值}

在这里插入图片描述

更改对话框同步更改

在这里插入图片描述
初始化时候调用了 updatemain
初始化程序界面
获取客户端程序客户区 界面大小
存放在 m_rect

3.服务端上线,下线,以及客户端的资源销毁(上)

列表控件

在这里插入图片描述

常规对应 socket指针
我们对应一个类指针

启动监听线程
不会发生阻塞状态

添加socket 变量

在这里插入图片描述

添加 socket 消息

头文件定义 InitSocket
在这里插入图片描述


Dlgcpp 加入 bool C你的Dlg::InitSocket() //初始化SOCKET
{WSADATA WSAData;  // 初始化WSAStartup(MAKEWORD(2,2), &WSAData);SOCKADDR_IN saddr;  //  声明结构体// 结构体操作 初始化 s=::socket(AF_INET,SOCK_STREAM,0);if(s==SOCKET_ERROR){MessageBox(_T("创建连接失败"),_T("提示"),MB_OK|MB_ICONWARNING);return false;}// 结构体赋值saddr.sin_family=AF_INET;saddr.sin_addr.S_un.S_addr=INADDR_ANY;saddr.sin_port=htons(m_port);int nRet;nRet=::bind(s,(SOCKADDR *)&saddr,sizeof(saddr));if(nRet == SOCKET_ERROR){MessageBox(_T("绑定端口失败"),_T("提示"),MB_OK|MB_ICONWARNING);return false;}// 最大上线主机数量  m_max   Wint类型nRet=listen(s,m_max);if(nRet == SOCKET_ERROR){MessageBox(_T("监听端口失败"),_T("提示"),MB_OK|MB_ICONWARNING);return false;}while(1){SOCKET SerSock;SOCKADDR_IN Seraddr;  // 结构体int Seraddrsize=sizeof(Seraddr);// 接受连接SerSock = accept(s,(sockaddr *)&Seraddr,&Seraddrsize);if (SerSock == INVALID_SOCKET){continue;}//  添加主机AddHost(SerSock,Seraddr);}return true;
}

syc系列 winSocket I/O模型

填补config信息

在这里插入图片描述

创建线程函数 并运行

为了适配多线程

防止上面的循环死锁 堵塞
所以把初始化操作封装到一个函数内


Dlgcpp //  空指针  传递了一个 当前类的 this指针
DWORD WINAPI C你的Dlg::OninitSocket(LPVOID self) //初始化Socket线程
{// 强制转换C你的Dlg* t = (C你的Dlg*)self;t->InitSocket();return 0;
}头文件静态声明static DWORD WINAPI OninitSocket(LPVOID self);

在这里插入图片描述

关闭句柄

这篇关于红队专题-从零开始VC++远程控制软件RAT-C/S-[2]界面编写及上线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166605

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo