首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WinExec, ShellExecute, CreateProcess

ShellExecute 可以指定工作目录,并且还可以寻找文件关联直接打开不用加载文件关联应用程序,ShellExecute还可以打开网页,启动相应邮件关联发送邮件等等。...返回值:   若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:   ① 0:系统内存或资源耗尽。   ...其返回值是布尔型,而真正感兴趣返回值发生于作为参数传送结构中(PROCESS_INFORMATION)。CreateProcess返回该结构中进程ID及其句柄,以及初始线程ID及其句柄。...ShellExecute 可以指定工作目录,并且还可以寻找文件关联直接打开不用加载文件关联应用程序,ShellExecute还可以打开网页,启动相应邮件关联发送邮件等等。...CreateProcess返回该结构中进 程ID及其句柄,以及初始线程ID及其句柄。可以将ID发送到 其它进程,或使用句 柄来控制新进程。

1.3K20

vc++ 在程序中运行另一个程序方法

ShellExecute 可以指定工作目录,并且还可以寻找文件关联直接打开不用加载文件关联应用程序,ShellExecute还可以打开网页,启动相应邮件关联发送邮件等等。     ...返回值:   若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:   ① 0:系统内存或资源耗尽。   ...lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回句柄是否可被子进程继承。   ...其返回值是布尔型,而真正感兴趣返回值发生于作为参数传送结构中(PROCESS_INFORMATION)。CreateProcess返回该结构中进程ID及其句柄,以及初始线程ID及其句柄。...可以看出,通过上面的几个不同方法,都可以实现在应用程序中打开其他应用程序目的,其中有些方法可能会麻烦一点,所以就需要我们根据不同目的去选择最适合自己方法去实现自己目的!

3.7K90
您找到你想要的搜索结果了吗?
是的
没有找到

Windows 编程(多进程)

创建进程函数 CreateProcess CreateProcessW( _In_opt_ LPCWSTR lpApplicationName,// 该字符串可以指定要执行模块完整路径和文件名...LPWSTR lpCommandLine, //命令行 _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, //该 结构确定子进程是否可以继承返回到新进程对象句柄...如果//lpProcessAttributes为NULL,则不能继承该句柄 _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, //该 结构确定子进程是否可以继承返回到新线程对象句柄...请注意,继承句柄原始句柄具有相同值和//访问权限 _In_ DWORD dwCreationFlags,// 控制优先级类别和流程创建标志 CREATE_NEW_CONSOLE _In_opt...命名管道 支持网络之间不同进程通信 CreateNamedPipe HANDLE CreateNamedPipeA( LPCSTR lpName, // \.

1K10

论如何利用可控参数拼接完成RCE

我们知道Windows里启动一个进程可以使用createprocess函数(https://docs.microsoft.com/en-us/previous-versions/aa908775(v=msdn...比如: chrome.exe urlstr 其中urlstr可控,原意是使用chrome.exe打开用户传递链接。...0x03 火狐浏览器-过滤空格 这是我今天重点要讲,这里我们限制一下条件: 1. 限制createprocess传入启动程序为firefox.exe 2....换句话说我们得指定桌面环境不同配置文件来生成这个headless实例才能避免和桌面环境火狐冲突。...\tdefault 这样做我们就能启动一个运行在后台并且访问我们beefheadless状态火狐浏览器,这个进程会长期挂在后台,前台新开火狐等操作是感知不到

27610

WinExec、ShellExecute和CreateProcess

⑶ 返回值:   若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:   ① 0:系统内存或资源耗尽。   ...lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回句柄是否可被子进程继承。   ...lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回句柄是否可被子进程继承。   ...可以用来设置控台标题,新窗口初始大小和位置,及重定向标准输入 和输出。新程序通常可以忽略多数这些数据项,如果选择那样做的话。可以规定该结构体中标志,表明要设置数据段。...其返回值是布尔型,而真正感兴趣返回值发生于作为参数传送结构中 (PROCESS_INFORMATION)。CreateProcess返回该结构中进程ID及其句柄,以及初始线程ID及其句柄

94120

ShellExecute, WinExec, CreateProcess区别

如果参数值为真,调用进程中每一个可继承打开句柄都将被子进程继承。被继承句柄原进程拥有完全相同值和访问权限。   ...新进程树用户标识符这个进程标识符是相同,由 lpProcessInformation参数返回。...如果这个参数为空,新进程将使用调用进程相同驱动器和目录。这个选项是一个需要启动启动应用程序并指定它们驱动器和工作目录外壳程序主要条件。   ...这个线程将连同一个初始化了堆栈一起被创建,堆栈大小由可执行文件文件头中描述决定。线程由文件头处开始执行。   新进程和新线程句柄被以全局访问权限创建。...由CreateProcess函数返回句柄对于进程对象具有PROCESS_ALL_ACCESS访问权限。   由lpcurrentDirectory参数指定的当前目录室子进程对象的当前目录。

88920

Windows黑客编程技术详解 --第四章 木马启动技术(内含赠书福利)

病毒木马植入模块成功植入用户计算机之后,便会启动攻击模块来对用户计算机数据实施窃取和回传等操作。通常植入和攻击是分开在不同模块之中,这里模块指的是DLL、exe或其他加密PE文件等。...本章介绍了3种常用病毒木马启动技术,它包括: q 创建进程API:介绍使用WinExec、ShellExecute以及CreateProcess创建进程。...bInheritHandles [in] 如果此参数为TRUE,则调用进程中每个可继承句柄都由新进程继承;如果参数为FALSE,则不能继承句柄。请注意,继承句柄具有原始句柄相同值和访问权限。...CreateProcessAsUser函数用法以及参数含义CreateProcess函数用法和参数含义类似。...服务程序入口点普通程序入口点不同,需要通过调用函数StartServiceCtrlDispatcher来设置服务入口点函数。

3.6K50

7.2 通过API创建新进程

但是,由于WinExec()函数没有提供区分进程启动成功和失败返回值,且无法从函数返回进程句柄获得与进程相关信息,因此使用较为有限。...:指定程序窗口最初显示方式,如SW_SHOW,即窗口正常大小和位置显示 WinExec 函数返回值是一个无符号整数,它表示进程是否成功启动。...若成功启动,则返回值为任务句柄。否则,返回值为0。...ShellExecute()函数优点是可以控制进程启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程方式,比如最大化或最小化窗口,或者在后台启动进程。...指定新进程初始工作目录,如果为NULL,则使用调用进程相同的当前目录 lpStartupInfo:指向STARTUPINFO结构体指针 lpProcessInformation:进程信息结构,包括新进程句柄和进程

16220

7.2 通过API创建新进程

但是,由于WinExec()函数没有提供区分进程启动成功和失败返回值,且无法从函数返回进程句柄获得与进程相关信息,因此使用较为有限。...,如SW_SHOW,即窗口正常大小和位置显示WinExec 函数返回值是一个无符号整数,它表示进程是否成功启动。...若成功启动,则返回值为任务句柄。否则,返回值为0。...ShellExecute()函数优点是可以控制进程启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程方式,比如最大化或最小化窗口,或者在后台启动进程。...,如果为NULL,则使用调用进程相同的当前目录lpStartupInfo:指向STARTUPINFO结构体指针lpProcessInformation:进程信息结构,包括新进程句柄和进程ID 如果仅仅只是需要将一个进程拉起来

18840

关于WinExec和System比较

⑶ 返回值:   若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:   ① 0:系统内存或资源耗尽。   ...⑷ 程序示例   下面通过一个例子来说名WinExec和ShellExecute使用。下面程序有控制台程序示例,其使用两种不同方法,打开文本文件。...lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回句柄是否可被子进程继承。   ...lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回句柄是否可被子进程继承。   ...其返回值是布尔型,而真正感兴趣返回值发生于作为参数传送结构中(PROCESS_INFORMATION)。CreateProcess返回该结构中进程ID及其句柄,以及初始线程ID及其句柄

97620

【Chromium】Base库最佳实践 - 进程和线程

LaunchProcess LaunchProcess基本实现是利用了CreateProcess系列函数来实现进程启动,其中LaunchOptions则是主要和CreateProcess各个参数一一对应...进程启动在windows上面需要额外注意UAC也就是是否管理员权限启动,有以下四种场景 非管理员权限应用 启动 非管理员权限进程 + 管理员权限应用 启动 管理员权限进程 这两种情况,应用利用CreateProcess...lpClass:用于指定注册表中类名。 hkeyClass:用于指定注册表中类键。 dwHotKey:指定应用程序关联热键。 hIcon/hMonitor:用于指定图标句柄或监视器句柄。...hProcess:如果设置了SEE_MASK_NOCLOSEPROCESS标志,这个字段会被设置为启动进程句柄。...如果命令执行成功并且正常退出,返回true,并且命令退出代码可以通过exit_code指针获得。

12210

实战 | 进程启动技术思路和研究

常规api创建进程 通过常用api来创建进程是常规启动进程方式,最常用几个api有WinExec、ShellExecute、CreateProcess,我们一个一个来看一下 WinExec 首先是...(或者是打开一个注册文件、打开一个目录、打印一个文件等等),并对外部程序有一定控制 HINSTANCE ShellExecuteA( [in, optional] HWND hwnd, [...,干活儿是里面的线程,所以下一步就是创建目标进程初始线程 EPROCESS对应,线程数据结构是ETHREAD,进程环境块PEB对应,线程也有线程环境块TEB; PEB在用户空间位置大致是固定...,完成之后再从ring0返回ring3。...该函数调用不需要任何参数,直接返回Session Id。根据Session Id继续调用WTSQueryUserToken函数来检索用户令牌,并获取对应用户令牌句柄

1K50

软件调试详解

,讲解调试程序和被调试程序之间如何建立联系 调试对象 调试器和被调试程序 调试器被调试程序之间建立起联系两种方式 CreateProcess DebugActiveProcess 调试器建立连接...DEBUG_OBJECT, *PDEBUG_OBJECT; 然后到ntoskrnl里面看一下NtCreateDebugObject 然后调用了ObInsertObject创建DebugObject结构返回句柄...再回到ntdll.dll,当前线程回0环创建了一个DebugObject结构,返回句柄到3环存放在了TEB0xF24偏移处 也就是说,遍历TEB0xF24偏移地方,如果有值则一定是调试器 被调试程序建立连接..., 第一个参数为被调试对象句柄,第二个参数为调试器句柄 执行ObReferenceObjectByHandle,把被调试进程句柄放到第五个参数里面,这里eax本来存储是调试器EPROCESS...ULONG Flags; //+38 标志 调试消息是否读取 } DEBUG_OBJECT, *PDEBUG_OBJECT; 调试事件处理 因为每种事件调试信息不一样,所以会有很多种类

64210

软件调试详解

调试器被调试程序之间建立起联系两种方式 •CreateProcess •DebugActiveProcess 调试器建立连接 首先看一下DebugActiveProcess 调用ntdll.dll...DEBUG_OBJECT, *PDEBUG_OBJECT; 然后到ntoskrnl里面看一下NtCreateDebugObject 然后调用了ObInsertObject创建DebugObject结构返回句柄...再回到ntdll.dll,当前线程回0环创建了一个DebugObject结构,返回句柄到3环存放在了TEB0xF24偏移处 也就是说,遍历TEB0xF24偏移地方,如果有值则一定是调试器 被调试程序建立连接..., 第一个参数为被调试对象句柄,第二个参数为调试器句柄 执行ObReferenceObjectByHandle,把被调试进程句柄放到第五个参数里面,这里eax本来存储是调试器EPROCESS...ULONG Flags; //+38 标志 调试消息是否读取 } DEBUG_OBJECT, *PDEBUG_OBJECT; 调试事件处理 因为每种事件调试信息不一样,所以会有很多种类(

52000

魔改CobaltStrike:探究beacon里每个功能点是如何实现

Createprocess()以挂起方式启动rundll32.exe: ? 注意输入标志0x00000004 CREATE_SUSPENDED: ? ?...直接使用createprocess()启动相应进程: ? Spawnto(x86) case13,spawnto,设置Beacon派生会话时使用程序 ?...steal_token case31,从目标进程中窃取访问令牌 先打开进程,获取指定进程句柄令牌,再用ImpersonateLoggedOnUser模拟一个登陆用户访问令牌安全上下文,最后用DuplicateTokenEx...Inject(x64) case43,指定打开进程来注入会话,原理就是远程线程注入,dllinject、shinject之类也会走这个case,流程case9一样。...Spawn(x64) case44,派生会话(x64),原理也是挂起线程rundll32线程注入dll,流程都是一样,只是在不同文件夹在rundll32.exe ?

2.7K10
领券