TC官方合作论坛

 找回密码
 立即注册
查看: 24904|回复: 87

【剑仙教程】用匿名管道,获取cmd命令返回值(源码)

  [复制链接]
发表于 2017-10-6 12:03:59 来自手机 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 剑仙十号 于 2023-9-1 19:46 编辑

【剑仙教程】用匿名管道,获取cmd命令返回值(源码)

var 线程ID
功能 执行()
var str
//2楼、3楼的源码 必须复制到脚本.
str = cmdpipe("cmd /c date 2017-10-05")
str = cmdpipe("cmd /c time 10:10:10")
str = cmdpipe("cmd /c ipconfig")
调试输出("内网ip:" & str)
str = cmdpipe("cmd /c dir c:")
调试输出("遍历结果:" & str)
结束

功能 启动_热键()
var bool = 线程获取状态(线程ID)
if(bool == 0)
  线程ID = 线程开启("执行", "")
end
结束
功能 终止_热键()
  线程关闭(线程ID)
结束

【剑仙教程】匿名管道,执行CMD命令返回 回显内容 (原理)
游客,如果您要查看本帖隐藏内容请回复


用匿名管道_隐藏执行cmd。获取IP地址.zip

4.92 KB, 下载次数: 72, 下载积分: 金币 -1 个

回复

使用道具 举报

 楼主| 发表于 2017-10-6 12:04:31 来自手机 | 显示全部楼层
本帖最后由 剑仙十号 于 2020-1-2 22:00 编辑

//匿名管道_定义部分
//用管道执行_批处理命令。禁止执行带交互的命令,可能会卡死。
//cmdstr         执行的命令
//time_out        命令执行的超时时间,防止卡死
function cmdpipe(cmdstr, time_out = 51000)
var sa = SECURITY_ATTRIBUTES()
sa["nLength"]["value"] = structlen(sa)
sa["bInheritHandle"]["value"] = true
//创建管道
var hRead, hWrite
if(!CreatePipe(hRead, hWrite, sa, 0))
  traceprint(getlasterror(1))
  traceprint("创建管道失败")
  return ""
end
var si = STARTUPINFO()
var pi = PROCESS_INFORMATION()
si["cb"]["value"] = structlen(si)
GetStartupInfo(si) //引用传参.
si["hStdError"]["value"] = hWrite
si["hStdOutput"]["value"] = hWrite
si["wShowWindow"]["value"] = 0
si["dwFlags"]["value"] = #00000101
//创建进程 与管道相关联
if(!CreateProcess(0, cmdstr, 0, 0, 1, 0, 0, 0, si, pi))
  traceprint(getlasterror(1))
  traceprint("创建进程失败")
  return ""
end
CloseHandle(hWrite)
var nSize = 1024
var buffer = new(1024)
memset(buffer, 0, 1024 + 1)
var nReadSize = 0
var string
var time1 = gettickcount()
while(ReadFile(hRead, buffer, 1024, nReadSize, 0))
  //内存溢出
  if(nReadSize > 1024)
   break
  end
  //超时
  var time2 = gettickcount()
  if(time2 - time1 > time_out)
   break
  end            
  string = string & addressvalue(buffer, "char *")
  sleep(1, 0)
  memset(buffer, 0, 1024 + 1)
end
delete(buffer) //之前漏掉了这处代码,程序有内存泄漏
CloseHandle(hRead)
return string
end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-6 12:05:34 来自手机 | 显示全部楼层
//win32_api定义部分。
//申请内存地址
function new(nSize)
var string = array()
string["str"] = array("char" = nSize + 1, "value" = "")
return structmalloc(string)
end
//释放内存
function delete(address)
structfree(address)
end
//重置一段内存中值
function memset(address, value, nSize)
return dllcall("kernel32.dll", "long", "RtlFillMemory", "long", address, "long", nSize, "long", value)
end
function SECURITY_ATTRIBUTES()
var sa0 = array() //定义SECURITY_ATTRIBUTES结构.
sa0["nLength"] =         array("long" = 1, "value" = 0)
sa0["lpSecurityDescriptor"] =         array("long" = 1, "value" = 0)
sa0["bInheritHandle"] =                 array("long" = 1, "value" = 0)
return sa0
end
function STARTUPINFO()
var si0 = array() //定义STARTUP_INFO结构.
si0["cb"] =                         array("long" = 1, "value" = 0)
si0["lpReserved"] =         array("long" = 1, "value" = 0)
si0["lpDesktop"] =         array("long" = 1, "value" = 0)
si0["lpTitle"] =                 array("long" = 1, "value" = 0)
si0["dwX"] =                         array("long" = 1, "value" = 0)
si0["dwY"] =                         array("long" = 1, "value" = 0)
si0["dwXSize"] =                 array("long" = 1, "value" = 0)
si0["dwYSize"] =                 array("long" = 1, "value" = 0)
si0["dwXCountChars"] = array("long" = 1, "value" = 0)
si0["dwYCountChars"] = array("long" = 1, "value" = 0)
si0["dwFillAttribute"] = array("long" = 1, "value" = 0)
si0["dwFlags"] =                 array("long" = 1, "value" = 0)
si0["wShowWindow"] =         array("short" = 1, "value" = 0)
si0["cbReserved2"] =         array("short" = 1, "value" = 0)
si0["lpReserved2"] =         array("long" = 1, "value" = 0)
si0["hStdInput"] =         array("long" = 1, "value" = 0)
si0["hStdOutput"] =         array("long" = 1, "value" = 0)
si0["hStdError"] =         array("long" = 1, "value" = 0)
return si0
end
function PROCESS_INFORMATION()
var pi0 = array() //定义PROCESS_INFORMATION结构.
pi0["hProcess"] =         array("long" = 1, "value" = 0)
pi0["hThread"] =         array("long" = 1, "value" = 0)
pi0["dwProcessId"] = array("long" = 1, "value" = 0)
pi0["dwThreadId"] = array("long" = 1, "value" = 0)
return pi0
end
//创建管道
function CreatePipe(&readPipe, &writePipe, &lpPipeAttributes, nSize)
return dllcall("kernel32.dll", "long", "CreatePipe", "plong", readPipe, "plong", writePipe, "pstruct", lpPipeAttributes, "long", nSize)
end
//返回当前进程,在启动时,被指定的STARTUPINFO结构信息.
function GetStartupInfo(&STARTUPINFO) //引用传参.
return dllcall("kernel32.dll", "long", "GetStartupInfo", "pstruct", STARTUPINFO)
end
//创建新进程
function CreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, &lpStartupInfo, &lpProcessInformation)
return dllcall("kernel32.dll", "long", "CreateProcessW", "long", lpApplicationName, "wchar *", lpCommandLine, "long", lpProcessAttributes, "long", lpThreadAttributes, "long", bInheritHandles, "long", dwCreationFlags, "long", lpEnvironment, "long", lpCurrentDirectory, "pstruct", lpStartupInfo, "pstruct", lpProcessInformation)
end
//关闭句柄
function CloseHandle(handle)
return dllcall("kernel32.dll", "long", "CloseHandle", "long", handle)
end
//读文件句柄,可以文件,管理,io这一系列的句柄内容
function ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &lpNumberOfBytesRead, lpOverlapped = 0)
return dllcall("kernel32.dll", "long", "ReadFile", "long", hFile, "long", lpBuffer, "long", nNumberOfBytesToRead, "plong", lpNumberOfBytesRead, "long", lpOverlapped)
end
回复 支持 反对

使用道具 举报

发表于 2018-3-28 21:56:06 | 显示全部楼层
匿名管道,执行CMD命令返回 回显内容
回复 支持 反对

使用道具 举报

发表于 2018-4-1 14:38:19 | 显示全部楼层
PipeCmd
回复

使用道具 举报

发表于 2018-4-3 21:07:50 | 显示全部楼层
222222222222222222222
回复 支持 反对

使用道具 举报

发表于 2018-4-5 12:08:21 | 显示全部楼层
回复

使用道具 举报

发表于 2018-4-5 16:29:14 | 显示全部楼层
··················
回复 支持 反对

使用道具 举报

发表于 2018-4-9 09:23:19 | 显示全部楼层
取全部模拟器
回复 支持 反对

使用道具 举报

发表于 2018-4-22 23:24:11 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-3-30 04:30 , Processed in 0.043386 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表