|
在木马中简单实现远程关机
在木马中,我们是采用的让客户端Socket给服务端的Socket发送相关的指令,同时当服务端收到相应的指令后,执行相对应的操作,比如关机,而这些操作实质就是调用相应的函数来处理,关机函数及其参数说明如下:
BOOL ExitWindowsEx(UINT uFlags,DWORD dwReserved);
在其中uFlags可以有以下值:
EWX_LOGOFF:注消;
EWX_POWEROFF:强制关机;
EWX_REBOOT:重启;
EWX_SHUTDOWN:先保存再关机;
EWX_FORCE:不保存关机;
EWX_FORCEIFHUNG:不保存关机(Windows 2000以上版本)。
知道了函数,接下来我们就在VC中用这个函数实现我们所要的功能吧。先来看看我们所要实现程序的外观!如图1所示:

图1
首先,由VC中的向导生成一个对话框,注意在生成向导中要选择成静态联编。由于我们在木马中是常用的是重启,那么我们就把这个程序取名为“reboot”吧!去掉它默认生成的静态文本,然后添加三个单选项,并把其它主要的项设定如下:

第二,打开MFC ClassWizard进行消息的映射处理,五个主要的控件都是用的单击消息处理,从而为每个控件进行了消息映射。如图2所示。

图2
第三,在rebootDlg.h中为三个单选按钮添加一个标志成员整形变量“m_mark”,并且在三个单选项按钮的函数体分别加入m_mark=0,m_mark=1,m_mark=2。如(另两个同理):
void CRebootDlg::OnLogoff()
{
// TODO: Add your control notification handler code here
m_mark=0;
}
第四,双击“确定”的按钮,去掉它原来默认调用的ONOK(),并且加入以下的代码(各代码功能请看注释):
void CRebootDlg::OnCok()
{
// TODO: Add your control notification handler code here
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion; //版本号
dwVersion = GetVersion(); //得到Windows NT或Win32的版本号
switch(m_mark) //由接收单选项值进行相关操作
{
case 0:
ExitWindowsEx(EWX_LOGOFF,0);
break; //注消操作
case 1:
if(dwVersion < 0x80000000)
{
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|
TOKEN_QUERY,&hToken);
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; //设置权限
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,0);
}
else //Windows系列其它系统处理
{
ExitWindowsEx(EWX_FORCE | EWX_REBOOT,0);
}
break; //重启操作
case 2:
if(dwVersion < 0x80000000) //用于判断Windows系列,从而设置相应的权限
{
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES |
TOKEN_QUERY,&hToken);
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,0);
}
else
{
ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN ,0);
}
break; //关闭计算机
}
}
第五,“取消”可以不做处理,采用默认的就可了,然后编译运行。这样你就为你的木马编写了远程关机部分,以后自己的木马也有关机功能了,是不是更专业了呢?
| 网游盗号木马实现手记 | 01-09 |
| 黑色技术蠕虫下载者[完整源码] | 11-01 |
| 利用BCB自己打造QQ炸弹 | 10-23 |
| 从内存中加载并启动一个exe(delp | 09-27 |
| 开启和关闭Windows xp 防火墙(de | 09-27 |
| 让你的程序通过XP防火墙(delphi编 | 09-27 |
| 如何让你的程序安全通过windows防 | 08-20 |
| 如何透过程序来控制 Windows (XP | 08-20 |
| 动易2005-2006算号器的源代码 | 08-11 |
| API对注册表进行操作(Delphi编程 | 07-30 |
| 一段隐藏注册表项的代码 | 07-26 |
| 了解VB编写病毒的大体方法 | 07-02 |