|
发表于 2024-5-10 18:30:54
|
显示全部楼层
广东省深圳市
用命名管道呀,超时退出 |
执行CMD | 文本型 | | |
命令行 | 文本型 | | | | 即时回显 | 子程序指针 | | | | 立退返回 | 逻辑型 | | | | 超时时间 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | SECURITY_ATTRIBUTES | SECURITY_ATTRIBUTES | | | STARTUPINFO | STARTUPINFO_short | | | PROCESS_INFORMATION | PROCESS_STRUCTURE | | | txt | 字节集 | | | len | 整数型 | | | hWrite | 整数型 | | | hRead | 整数型 | | | EXIT | 整数型 | | | fanhui | 文本型 | | | linshi | 文本型 | | | canshu | 整数型 | | 1 | 开始时间 | 整数型 | | | 置入代码 ( #保护函数头_超级 )SECURITY_ATTRIBUTES.nLength = 12 SECURITY_ATTRIBUTES.lpSecurityDescriptor = 0 SECURITY_ATTRIBUTES.bInheritHandle = 1 CreatePipe (hRead, hWrite, SECURITY_ATTRIBUTES, 0 )STARTUPINFO.cb = 68 STARTUPINFO.dwFlags = 位或 (1, 256 )STARTUPINFO.wShowWindow = 0 STARTUPINFO.hStdOutput = hWrite STARTUPINFO.hStdError = hWrite 如果 (取操作系统类别 () ≤ 2 )CreateProcessA (0, “command.com /c ” + 命令行, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION )CreateProcessA (0, “cmd.exe /c ” + 命令行, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION )CloseHandle (hWrite)开始时间 = 取启动时间 () 判断循环首 (len ≠ -1 )PeekNamedPipe (hRead, 0, 0, 0, len, 0 )如果 (len ≠ 0 )txt = 取空白字节集 (1024 )ReadFile (hRead, txt, 1023, len, 0 )linshi = 取字节集数据 (txt, 10, )如果真 (是否为空 (即时回显 ) = 假)canshu [1 ] = lstrcpyn (linshi, linshi, 0 )如果真 (CallWindowProcA ({ 85, 139, 236, 86, 139, 117, 16, 141, 78, 255, 133, 201, 124, 21, 139, 69, 12, 141, 4, 136, 65, 139, 16, 137, 85, 16, 255, 117, 16, 131, 232, 4, 73, 117, 242, 255, 85, 8, 137, 69, 12, 139, 69, 20, 133, 192, 116, 13, 141, 4, 181, 0, 0, 0, 0, 137, 69, 16, 3, 101, 16, 139, 69, 12, 94, 93, 194, 16, 0 }, 即时回显, canshu, 1, 假)) CloseHandle (hRead )跳出循环 ()fanhui = fanhui + linshiGetExitCodeProcess (PROCESS_INFORMATION.hProcess, EXIT )如果 (EXIT ≠ 259 )CloseHandle (hRead )跳出循环 () 如果真 (超时时间 > 0 )如果真 (取启动时间 () - 开始时间 ≥ 超时时间 )CloseHandle (hRead )跳出循环 ()处理事件 ()如果真 (立退返回 = 真)CloseHandle (hRead )跳出循环 ()判断循环尾 ()返回 (fanhui )
|
|