红队专题
- 招募六边形战士队员
- [1]---远控介绍及界面编写
- 1.远程控制软件演示及教程简要说明
- 主程序
- 可执行程序 服务端生成器
- 主机上线
- 服务端程序 和 服务
- 文件管理
- CMD
- 进程
- 服务自启动
- 主程序
- 主对话框
- 操作菜单
- 列表框
- 配置信息
 
- 多线程操作
- 非模式对话框
 
- 2.环境:
- 3.界面编程
- 新建项目
- 使用静态库MFC
- 删除默认控件
- 设置项目
- 去除兼容问题
 
- 调出系统菜单
- 最大化最小化
- 可拖拽border
- 添加资源 菜单
- 关联菜单 ID
- 导入资源
- 添加菜单 信息
- cpp中添加 UpdateMain代码
- 添加列表框
- 列表栏View 改成报表
- 添加控件变量
- 主函数初始化端口
- 类视图重载函数
 
 

招募六边形战士队员
一起学习 代码审计、安全开发、web攻防、逆向等。。。
 私信联系
 
[1]—远控介绍及界面编写
1.远程控制软件演示及教程简要说明









 服务启动  ---- 注销 模式 可以自动启动服务 上线 
- 编写前 功能了解分析
- 界面 运行模式
主程序

主对话框
操作菜单
列表框


配置信息

多线程操作
非模式对话框

 

2.环境:
操作系统:Windows 7
 编译器:VS2008
3.界面编程
https://www.cctry.com/
新建项目

 
 
使用静态库MFC
为了在没有 安装运行库的 主机上使用
 
 


删除默认控件

设置项目

 

去除兼容问题

调出系统菜单

最大化最小化

可拖拽border

添加资源 菜单
client.rc 中添加资源
 

 文件 退出
 选项 配置
 关于 关于我们
关联菜单 ID

导入资源

添加菜单 信息
相关代码
.h  头文件中创建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;public:CListCtrl m_list;菜单项 + 图标
 菜单栏
 列表框 + 图标 
 
cpp中添加 UpdateMain代码

 五个重载方法
 第一个 注意 参数 无符号整形
 查询 MSDN

 · 位图对象
 · 颜色信息
宏 定义 id号 对应 资源
 
 rc的代码
  · id 号
· id 号
 · 资源类型
 · 具体路径
void 你的Dlg::UpdateMain(int port)
{// 创建图像列表m_imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);CBitmap bmp;
//  创建位图对象for(int i=0;i<8;i++){// 通过 id  依次导入位图 bmp.LoadBitmapW(IDB_BITMAP1+i);// 将真彩色255 位图  添加进 image列表m_imagelist.Add(&bmp,RGB(255,255,255));bmp.DeleteObject();//  释放资源}/*m_bmp[0].LoadBitmap(IDB_MENU_EXIT);m_bmp[1].LoadBitmap(IDB_MENU_SETTING);m_bmp[2].LoadBitmap(IDB_MENU_ABOUT);m_subbmp[0].LoadBitmapW(IDB_MENU_AGENT);m_subbmp[1].LoadBitmapW(IDB_MENU_SHUTDOWN);m_subbmp[2].LoadBitmapW(IDB_MENU_RESTART);m_subbmp[3].LoadBitmapW(IDB_MENU_UPDATE);m_subbmp[4].LoadBitmapW(IDB_MENU_HTTP);m_subbmp[5].LoadBitmapW(IDB_MENU_RUN);GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION, &m_bmp[0], &m_bmp[0]);GetMenu()->GetSubMenu(1)->SetMenuItemBitmaps(0,MF_BYPOSITION, &m_bmp[1], &m_bmp[1]);GetMenu()->GetSubMenu(2)->SetMenuItemBitmaps(0,MF_BYPOSITION, &m_bmp[2], &m_bmp[2]);
*///  工具栏的设定
//  包含九个元素[按钮ID]的  无符号整形  常量 数组     0为竖线const UINT t[9] = {1001,1002,1003,1004,1005,1006,0,1007,1008};// 用于单击事件的触发//  指向this 指针  主对话框m_toolbar.CreateEx(this);
//  id数组  数量m_toolbar.SetButtons(t,9);//  按钮  图标 设置大小m_toolbar.SetSizes(CSize(60,56),CSize(24,24));m_toolbar.SetButtonText(0,_T("文件管理"));m_toolbar.SetButtonText(1,_T("屏幕监控"));m_toolbar.SetButtonText(2,_T("超级终端"));m_toolbar.SetButtonText(3,_T("进程管理"));m_toolbar.SetButtonText(4,_T("视频监控"));m_toolbar.SetButtonText(5,_T("卸载主机"));m_toolbar.SetButtonText(7,_T("程序设置"));m_toolbar.SetButtonText(8,_T("关于软件"));//关联  imagelist   GetToolBarCtrl()获取指针   设置图像列表m_toolbar.GetToolBarCtrl().SetImageList(&m_imagelist);//  状态栏设置BOOL hbar = m_statusbar.Create(this);UINT b[2]={1009,1010};hbar = m_statusbar.SetIndicators(b,2);// 关联状态栏    id   按钮id   风格   长度m_statusbar.SetPaneInfo(0,b[0],SBPS_NORMAL,400);m_statusbar.SetPaneInfo(1,b[1],SBPS_NORMAL,180);CString ListemPort;ListemPort.Format(_T("监听端口:%d"),port);m_statusbar.SetPaneText(0,ListemPort);m_statusbar.SetPaneText(1,_T("在线主机:0 台"));// 重设  工具条 RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);/*m_mainicon.Create(16,16,ILC_COLOR24|ILC_MASK,1,0);m_mainicon.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_USER)));m_mainicon.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_CAM)));m_list.SetImageList(&m_mainicon,LVSIL_SMALL);*///  重新 设置列表框  拓展风格    整行选中 报表  复选框m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);// 插入条目m_list.InsertColumn(0,_T("地理位置"),LVCFMT_LEFT,160);m_list.InsertColumn(1,_T("IP地址"),LVCFMT_LEFT,110);m_list.InsertColumn(2,_T("操作系统"),LVCFMT_LEFT,90);m_list.InsertColumn(3,_T("代理状态"),LVCFMT_LEFT,60);m_list.InsertColumn(4,_T("服务端版本号"),LVCFMT_LEFT,100);GetClientRect(&m_rect);
}有些东西需要注释掉
添加列表框
程序框最大化
 留出 工具栏菜单栏状态栏地方
 
列表栏View 改成报表

 
添加控件变量




注意update函数 
主函数初始化端口

 

类视图重载函数

 
BOOL CExecN0vvDlg::PreTranslateMessage(MSG* pMsg)
{// TODO: 在此添加专用代码和/或调用基类if(pMsg->message==WM_KEYDOWN){int nVirtKey = (int)pMsg->wParam;if(nVirtKey==VK_RETURN || nVirtKey==VK_ESCAPE){return TRUE;}}return CDialog::PreTranslateMessage(pMsg);
}判断 传入的无符号整形的参数 是否为 WM_KEYDOWN
 按键消息
 等于回车 或者 ESC 截断