远程控制中,有一个重要的部份就是如何实现远程关机,如在各种黑客入侵中,我们到处可以见到木马的身影,木马它作为一种远程控制软件,它一般是实现了远程关机功能的。如我国大名鼎鼎的木马“冰河”等,都是有这个功能的,只是它是各种功能的集合罢了,今天我们就来看看这个重要的关机部分是如何编程实现的,在这里我就用眼下流行的VC6.0来编写,同时用VC也大大减少了我们的一些设计工作,让我们的菜鸟也来动手写一下自己的入侵工具。
在木马中,我们是采用的让客户端Socket给服务端的Socket发送相关的指令,同时当服务端收到相应的指令后,就执行相对应的操作指令,这些操作当然是在服务端的计算机上所进行的。而这个操作实质就是调用相应的函数来处理,这个函数及其参数说明就是如下:
BOOL ExitWindowsEx(UINT uFlags,DWORD dwReserved);
在其中uFlags可以有的取值:
EWX_LOGOFF:注消; EWX_POWEROFF:强制关机; EWX_REBOOT:重启;
EWX_SHUTDOWN:先保存再关机; EWX_FORCE:不保存就关机;
EWX_FORCEIFHUNG:不保存就关机(WIN2K以上版本);
好了,接下来我们就在VC中来用这个函数实现我们所要的功能。
首先,由VC中的向导生成一个对话框,注意在生成向导中要选择成静态联编,由于我们在木马中一般是常用的是重启,那么我们就把这个程序取名为reboot吧!去掉它默认生成的静态文本,然后添加了三个单选项。并把其它主要的项设定如下:
控件 ID 属性
Button1 OnOK “确定”
Button2 OnCancel “取消”
Radio1 IDC_LOGOFF “注消计算机”
Radio2 IDC_REBOOT “重启计算机”
Radio3 IDC_SHUTDOWN “关闭计算机”
第二,打开MFC ClassWizard进行消息的映射处理,五个主要的控件都是用单击这个消息处理,从而为为每个控件进行了消息映射。
第三、在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_REBOOT | EWX_FORCE,0);
}
else //WIN系列其它系统
{
ExitWindowsEx(EWX_FORCE | EWX_REBOOT,0);
}
break; //重启操作
case 2:
if(dwVersion < 0x80000000)//用于判断WIN系列,从而设置相应的权限
{
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;//关闭计算机
}
}
第五、“取消”可以不做处理,采用默认的就可了,然后编译运行完成,这样你就为你的木马编写了远程关机部分。
分享到:
相关推荐
例如,在Windows系统中,可以调用Win32 API函数如`InitiateSystemShutdown`来实现远程关机。这个函数需要目标计算机的IP地址、用户名和密码等信息,以及是否立即关机等参数。在C++中,可以通过`CreateProcess`或`...
实现远程关机程序时,需要考虑以下步骤: 1. **建立网络连接**:根据目标系统的类型(如Windows, Linux, MacOS等),选择合适的通信方式,创建TCP连接或使用特定的协议(如SMB, SSH等)。 2. **身份验证**:为了...
此外,除了使用WMI,还可以使用`System.Diagnostics`命名空间的`Process`类来启动远程计算机上的`shutdown.exe`命令行工具来实现远程关机,但这种方法需要管理员权限,并且可能会受到防火墙或安全策略的限制。...
通过阅读和学习这段源代码,开发者可以理解如何在C++环境中操作Windows API来实现远程关机,这对系统管理、网络编程以及安全领域的开发者来说,都是非常宝贵的经验。 为了深入理解并应用这些知识,开发者需要熟悉...
在C#编程环境中,实现远程关机和重启功能主要涉及到Windows API调用和网络通信的知识。下面将详细讲解这些知识点: 1. **Windows API调用**:C#本身并不直接支持远程系统操作,如关机或重启,但可以通过调用Windows...
本主题聚焦于如何利用C#实现远程关机功能,这是一个涉及到操作系统交互和网络通信的重要技术点。 首先,要实现远程关机,C#开发者需要理解Windows API,这是微软提供的操作系统接口,允许程序员访问操作系统底层的...
在C#中实现远程关机涉及到Windows操作系统底层的API调用,尤其是系统管理相关的函数。下面我们将详细探讨这个知识点: 1. **C#与系统API交互**:C#本身并不直接支持远程关机这样的功能,但是可以通过P/Invoke...
在Windows系统中,可以使用命令行工具`shutdown.exe`,配合不同的参数来实现远程关机、重启等操作。例如,`shutdown /s /t 0 /m \\目标计算机IP`会立即关闭指定的远程计算机。 然而,要编写远程关机的源代码,我们...
本主题主要探讨如何利用Winsock库来实现远程关机功能,这是一种高级的网络编程应用,涉及到多个关键知识点。 首先,我们需要了解Winsock的基本概念。Winsock提供了一种标准接口,使得程序员可以编写跨平台的网络...
远程控制关机功能通常基于网络协议,如TCP/IP,通过发送特定的命令或请求到目标计算机来实现。这种工具可能使用Windows操作系统提供的API(应用程序编程接口)或命令行工具,例如`shutdown`命令,来进行远程操作。在...
在Windows操作系统平台下,Winsock网络通信协议为实现远程关机技术提供了技术基础。本文将详细解析基于Winsock网络通信的远程关机技术,包括其设计思想、实现原理以及具体实现步骤。 Winsock控件是Windows平台下的...
至于提供的文件列表,"控制端1.exe"和"控制端"可能是实现远程关机功能的程序,"system.exe"可能是用于执行关机命令的系统级程序,而"受控端"则可能是被控制的计算机所需要安装的组件,用于接收并执行来自控制端的...
本示例中,我们将深入探讨如何利用C#来实现远程计算机的关机、重启和注销功能,这些功能是通过Windows Management Instrumentation(WMI)技术实现的。 WMI是微软提供的一种管理系统资源的方法,它允许程序通过脚本...
本篇文章将详细讲解如何利用Java编程语言实现远程关机的功能,以及相关的关键知识点。 首先,Java远程关机涉及到的主要技术是Java的网络编程和操作系统接口。Java提供了一个强大的Socket编程模型,可以用来创建网络...
本文将详细介绍如何配置电脑以实现远程开关机,并提供解决配置过程中遇到的常见问题的方法。 首先,远程控制Windows开机,需要确保计算机在关机状态下仍然保持网络连接。检查网口指示灯是否在关机后闪烁,如果未...
在Windows操作系统中,可以通过发送特定的信号或调用系统API来实现远程关机。C++Builder是一款强大的集成开发环境(IDE),它基于C++编程语言,并提供了丰富的VCL库(Visual Component Library)以及RTL(Run-Time ...
本文将详细介绍如何使用C#结合WMI实现远程关机功能。 #### WMI简介 WMI是Microsoft在Windows平台上实现的一种基于COM的技术,它允许应用程序、用户脚本和管理员访问关于本地或远程计算机的硬件和操作系统的信息。...
在本项目中,"VC++实现聊天程序(包括远程关机功能...总之,"VC++实现聊天程序(包括远程关机功能)源码"是一个综合性的项目,涵盖了从基础的编程概念到高级的系统级操作,是学习C++网络编程和系统控制的绝佳实践案例。
Delphi程序员可以使用`External`声明调用这些API,实现远程关机功能。 4. **权限管理**:进行远程操作时,需要确保有足够的权限。通常,这需要管理员级别的账户权限,并且目标计算机必须允许来自源计算机的信任连接...