注:本文于07/4月于黑客防线发表版权归黑客防线所有,转载请注明出处
打造自己的GUI专版命令行程序
文/图 德州科技职业学院 冷风
命令行下的工具效率高,速度快,但是当程序的参数太多时,却不易于使用。所以我们就给它做个界面封装一下,顺 便把我们的大名也加上呵呵为了方便说明我们选用一个比较简单的程序GetOS.exe它是MS04011工具包中的一个小 工具,主要用来探测目标系统的类型原程序和改造后的效果如图1和图2所示
实现思路:
现在主要有两个问题需解决
1 .怎样在GUI程序中把参数传递给CMD程序
2 .怎样把结果传回到界面
这两个问题可以用CreateProcess结合管道来解决,可以用CreateProcess创建CMD程序并传递需要参数
执行完成后再将结果写到指定的管道中去,最后把管道的内容更新到界面程序的控件中。
现在主要有两个问题需解决
1 .怎样在GUI程序中把参数传递给CMD程序
2 .怎样把结果传回到界面
这两个问题可以用CreateProcess结合管道来解决,可以用CreateProcess创建CMD程序并传递需要参数
执行完成后再将结果写到指定的管道中去,最后把管道的内容更新到界面程序的控件中。
结构说明:
在开始之前先看几个比较重要的结构和API函数
CreateProcess用来创建新的进程它的的原形如下:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
// pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PRO
在开始之前先看几个比较重要的结构和API函数
CreateProcess用来创建新的进程它的的原形如下:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
// pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PRO