工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VC > 正文
木马中如何编程实现远程关机(VC版)
[文章信息]
作者:安美洪
时间:2005-02-19
出处:BLOG
责任编辑:方舟
[文章导读]
远程控制中,有一个重要的部份就是如何实现远程关机,如在各种黑客入侵中,我们到处可以见到木马的身影
advertisement
热点推荐
· VB编程破解Windows屏幕保护密码
· [视频]PS为图片添加水印
· MP3分类管理行家Music Box
· 关于Java栈与堆的思考
· 大道至简 Java 23种模式一点就通
[正文]
  远程控制中,有一个重要的部份就是如何实现远程关机,如在各种黑客入侵中,我们到处可以见到木马的身影,木马它作为一种远程控制软件,它一般是实现了远程关机功能的。如我国大名鼎鼎的木马“冰河”等,都是有这个功能的,只是它是各种功能的集合罢了,今天我们就来看看这个重要的关机部分是如何编程实现的,在这里我就用眼下流行的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_SHUTDOWN | 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;//关闭计算机
  }
 }

  第五、“取消”可以不做处理,采用默认的就可了,然后编译运行完成,这样你就为你的木马编写了远程关机部分。最后要是你有什么问题讨论请联系:anmeihong@sina.com

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • VC下利用OpenGL构造自由型曲线曲面
  • MFC程序员的WTL指南之高级界面类
  • Visual C++ MFC 中常用宏的含义
  • Visual C++初学者入门的一条捷径
  • Visual C++开发中常见问题的答案
  • 十大台资手机代工建仓大陆 投资环境缺什么
  • 鸿海11亿元购奇美通讯 郭台铭称霸手机代工
  • 国美被诉卖水货相机 赔偿消费者损失后和解
  • 国内手机产能超过3亿部 投资风险逐渐增大
  • 数字电视获国家开发银行贷款 有线转换提速
  • 分析:受3G冲击 小灵通三年后将遭淘汰
  • IBM投1亿美元狙击微软 推动开发Linux应用
  • 新惠普欲重整河山 打印与成像为主要业务
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索