红队专题-从零开始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);

在这里插入图片描述

关闭句柄

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

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

相关文章

ReactNative学习笔记

文章目录 基础环境搭建创建项目安装vscode插件调试工具基础语法掌握ReactStyleSheetRN中的样式和CSS的不同通过style属性直接声明在style属性中调用StyleSheet声明的样式 Flexbox术语属性响应式布局 组件和API简介核心组件**最常用的一些核心组件**各核心组件的演示代码Alert和…

商城小程序代客下单程序开发演示

一款专为传统电商、实体商家开发的商城系统小程序,做私域、做留存、做社交必备功能全都有。 1、丰富的营销玩法:拼团、秒杀、定金预售、分销、社区团购、积分商城、支付有礼等主流获客玩法都有。 2、强大的会员体系:普通会员、付费会员、会…

RT-Thread 中断管理(学习二)

中断的底半处理 RT-Thread不对中断服务程序所需要的处理时间做任何假设、限制,但如同其它实时操作系统或非实时操作系统一样,用户需要保证所有的中断服务程序在尽可能短的时间内完成。这样在发生中断嵌套,或屏蔽了相应中断源的过程中&#x…

JAVA-SpringBoot入门Demo用IDEA建立helloworld

使用编辑器IDEA做SpringBoot项目最近几年比较红红,作为JAVA语言翻身的技术,用户量激增。由于java平台原来的占有率,相比net core在某些方面更有优势。 我把本次我下载完成后Maven项目的过程记录下来了,仅供参考! 安装J…

FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍

FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍 FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍FFmpeg 简介FFmpeg 基础知识复用与解复用编解码器码率和帧率 资料 FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍 本系列文章要解决的问题&#xff1…

1.6 IntelliJ IDEA开发工具

前言: ### 1.6 IntelliJ IDEA开发工具笔记 - **背景**: - 使用基础文本编辑器如记事本编写Java代码虽然可行,但存在效率低下且难以调试的问题。 - 集成开发环境 (IDE) 可以有效地提高Java程序的开发效率。 - **常见Java IDE**&#xf…

【深度学习】UNIT-DDPM核心讲解

文章目录 大致介绍:扩散损失:转换损失:循环一致性损失:推理过程:优缺点: 参考文章: https://blog.csdn.net/ssshyeong/article/details/127210086 这篇文章对整个文章 UNIT-DDPM: UNpaired Imag…

关于 Vue-iClient-MapboxGL 的使用注意事项

官网:https://iclient.supermap.io/web/apis/vue/zh/api/guide/installation.html 关于图的使用,其余的引入步骤不再赘述,仅说注意事项。 推荐使用的是全局引入,也就是完整引入 因为单独引入我踩了不少坑,比如说 cs…

PCA和SVD数据降维

PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。 最大可分性 基向量乘原始矩阵会将矩阵映射到这个基向量空间中,如果基的数量少于向量本身的维数…

Pyside6 安装和简单界面开发

Pyside6 安装和简单界面开发 Pyside6介绍Pysied6开发环境搭建Python安装Pysied6安装 Pyside6界面开发简单界面设计界面设计界面编译 编写界面初始化代码软件打包 Pyside6介绍 对于Python的GUI开发来说,Python自带的可视化编程模块的功能较弱,PySide是跨…

浙江工业大学2024年工商管理硕士(MBA)联考网报指南

2024年MBA全国联考报名系统已开放。考生登录“中国研究生招生信息网”http://yz.chsi.com.cn进行报名。 网报分为“填写考生信息”和“填写报考信息”两大步骤,MBA中心特制作注意事项流程图供参考,希望能够帮助大家顺利报考。 预报名成功的考生&…

Git 学习笔记 | Git 的简介与历史

Git 学习笔记 | Git 的简介与历史 Git 学习笔记 | Git 的简介与历史Git 简介Git 历史 Git 学习笔记 | Git 的简介与历史 Git 简介 Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库&…