论坛: 编程破解 标题: 如何才能让系统命令隐蔽的运行? 复制本贴地址    
作者: zhxiaoyu [zhxiaoyu]    论坛用户   登录
我利用函数system来运行一些windows系统的命令,
例如:
system("tree C:\\ >> aa.txt");
system("net send xx.xx.xx.xx MMMMMMM");
可以正常运行,但是会显示控制台的黑框。
有没有办法消除黑框?

如果使用WinExec等API函数,
则不能正常运行,
这是为什么?
难道系统命令不是程序吗?
tree也是windows目录下的一个程序啊。

希望哪位大虾能指点一下。
谢谢。









地主 发表时间: 06/04 20:01

回复: xiean [xiean]   论坛用户   登录
---------------
如果使用WinExec等API函数,
则不能正常运行,
---------------

不能正常运行指的什么?

B1层 发表时间: 06/06 22:21

回复: zhxiaoyu [zhxiaoyu]   论坛用户   登录
就是不能运行,

应该是因为tree.com是DOS程序的缘故吧。

注意看下一层。

B2层 发表时间: 06/07 18:57

回复: zhxiaoyu [zhxiaoyu]   论坛用户   登录
偶终于搞出一套办法来了, 
很土,但非常实用。 

这里拿出来共享吧,希望以后有兄弟能用的着。 
 
  
#include <windows.h> 
/*在windows下运行DOS程序不带黑框*/ 
/*不仅是.exe,.com,连.bat也可以准确运行*/
//调试环境win2000Pro. VC6 
//如果在95,98下则cmd.exe的名字可能要稍微改一下 
//在最简单的SDK程序中运行就可以了 
// 
void LoadExtApp(char *sCmdLine){ 
    WinExec(sCmdLine, SW_HIDE); 

  
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, int iCmdShow) 

 LoadExtApp("cmd /c tree C:\\ >> aa.txt"); 
 return 0 ; 

  
//下面,我简单介绍以下可能的原理: 
//1、WINDOWS2000运行DOS程序应该是通过CMD.EXE这个程序 
//2、你用PE文件资源分析工具稍微作个分析,就可以发现 
//   cmd.exe自己却是个不折不扣的WIN32的PE文件!! 
//3、我们调用WinExec()不能执行DOS程序,但却可以执行CMD.EXE这个WIN32的程序 
//4、其实,只要设定CMD.EXE运行的方式,则自然可以随意定义了是否出现窗口了 
//   黑框其实就是cmd.exe的窗口,我们把它隐藏掉(SW_HIDE),自然就没黑框了。 


B3层 发表时间: 06/07 18:59

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号