红队专题
- 招募六边形战士队员
- [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)学习方法