红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远程控制软件总结

news/2024/6/17 9:00:46 标签: c++, c语言, mfc

红队专题

  • 招募六边形战士队员
  • [30]远控班第一期课程与远控总结

在这里插入图片描述

招募六边形战士队员

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

[30]远控班第一期课程与远控总结

.Bug修复

(1)生成路径

(2)显示系统版本号

二.内存泄露

(1)如何检查内存泄露
#define CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

_CrtDumpMemoryLeaks();
_CrtSetBreakAlloc(块号);

(2)如何修复内存泄露
AfxSocketInit 导致 memory leak
pThreadState->m_pmapSocketHandle = new CMapPtrToPtr;
pThreadState->m_pmapDeadSockets = new CMapPtrToPtr;
pThreadState->m_plistSocketNotifications = new CPtrList;

(3)实战
void CFileview::ReleaseList()
{
    int count = m_list.GetItemCount();
    __int64 *t;
    for(int i=0;i<count;i++)
    {
        t = (__int64*)m_list.GetItemData(i);
        delete t;
    }
    m_list.DeleteAllItems();
}

void CFileview::ReleaseTree()
{
    DRIVER *disk_t;
    HTREEITEM hItem = m_tree.GetRootItem();
    if(hItem != NULL)
    {
        disk_t = (DRIVER*)m_tree.GetItemData(hItem);
        delete disk_t;
        for(;;)
        {
            hItem = m_tree.GetNextSiblingItem(hItem);
            if(hItem != NULL)
            {
                disk_t = (DRIVER*)m_tree.GetItemData(hItem);
                delete disk_t;
            }
            else
            {
                break;
            }
        }
    }
}.编码规范

(1)避免二义性
if((a + b) > (c + d))

(2)避免否定表达式
bool t;
...
if(t == false)(!t)
{
}

(3)避免if then if
if(mmm)
{
   if(nnn)  
   {
      ...;
   }
}

if(mmm && nnn)
{
}

(4)避免else return
单入口单出口
int func()
{
   int t;
   if(,,,)
   {
      t = 1;
   }
   else
   {
      t = 2;
   }
   return t;
}.远控历史

(1)第一代远控 --- (架构:Socket/Server 1/1)(模型:多线程 + 阻塞Socket)

(2)第二代远控 --- (架构:Socket/Server N/1)(模型:多线程 + 阻塞Socket)

主机
   Socket --- 判断主机是否下线
   Socket --- 文官管理Sock
   Socket --- 屏幕
   Socket --- 进程
服务端

(3)第三代远控 --- (架构:Socket/Server N/1)(模型:完成端口).功能扩展

(1)如何对远控进行功能扩展

(2)实例一:控制密码

(3)实例二:显示信息框

(4)实例三:服务管理

(5)实例四:注册表管理

(6)实例五:域名上线 StartSocket

六.学习经验

(1)书籍推荐
谭浩强 C语言
C Primer Plus 中文版
C++ Primer Plus

func(char *a)
{
    int t = sizeof(a);
}

VC++开发实战宝典(个人推荐)
VC++项目开发全程实录(个人推荐) MIS(管理信息系统),工具

VC++入门经典2008 2010

windows核心编程(第五版)

(2)学习方法

http://www.niftyadmin.cn/n/5161060.html

相关文章

Mysql进阶-视图篇

介绍 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存查询结果。…

卡牌游戏类型定制开发微信卡牌小程序游戏

卡牌类型的游戏开发具有一些独特的特点和挑战&#xff0c;以下是一些主要的特点&#xff1a; 卡牌设计和平衡&#xff1a;卡牌游戏的核心是卡牌设计和平衡。开发团队需要设计各种卡牌&#xff0c;确保它们在游戏中相互平衡&#xff0c;以便提供有趣的游戏体验。卡牌的特性、效…

【Rust日报】2023-11-06 ESP上使用 Rust实现 SNTP协议

ESP上使用 Rust实现 SNTP协议 在这篇文章中&#xff0c;作者使用 ESP 和 Rust 使用 SNTP 协议将设备系统时间与网络时间同步。 SNTP 是 Simple Network Time Protocol 的缩写&#xff0c;它是一种用于在计算机系统之间通过分组交换、可变延迟数据网络进行时钟同步的网络协议。S…

基于Java+SpringBoot+LayUI仓库管理系统

一.项目介绍 本项目是使用JavaSpringBoot开发&#xff0c;可以实现仓库的注册、登录&#xff0c;登录后可进入系统&#xff0c;进行客户管理、供应商管理、商品管理、商品退货查询管理、登录日志及退出等几大模块。系统界面采用传统的后台管理界面&#xff0c;界面简单、直观。…

idea 模板参数注释 {@link}

1. 新增组 2. 设置方法注释及变量 增加模板文本 ** * $param$ * return {link $return$} */3. 设置变量表达式 勾选跳过param 参数表达式 groovyScript("def result ;def params \"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList();def param…

什么是跨站脚本攻击(XSS)?

跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c;XSS&#xff09;是一种常见的网络安全漏洞&#xff0c;攻击者通过在受信任的网页中注入恶意脚本&#xff0c;从而在用户的浏览器中执行该恶意脚本。 XSS 攻击的一般过程如下&#xff1a; 攻击者找到一个存在 XSS 漏…

SpringCloud 微服务全栈体系(十三)

第十一章 分布式搜索引擎 elasticsearch 二、索引库操作 索引库就类似数据库表&#xff0c;mapping 映射就类似表的结构。 我们要向 es 中存储数据&#xff0c;必须先创建“库”和“表”。 1. mapping 映射属性 mapping 是对索引库中文档的约束&#xff0c;常见的 mapping …

封装与访问控制publicprivateprotected

在C中&#xff0c;封装是一种将数据和操作数据的函数捆绑在一起&#xff0c;并以一种隐藏内部实现细节的方式公开接口的过程。访问控制是一种限制对类的成员的访问的方式。C提供了三种访问控制&#xff1a;public、private和protected。 Public&#xff1a;如果一个类的成员被…