首页
学习
活动
专区
圈层
工具
发布

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

直接调用ShellExecute函数创建进程,具体的实现代码如下所示。...虽然Windows 7及以上版本的SESSION 0给服务层和应用层间的通信造成了很大的难度,但这并不代表没有办法实现服务层与应用层间的通信与交互。...请注意,继承的句柄具有与原始句柄相同的值和访问权限。 dwCreationFlags [in] 控制优先级和进程创建的标志。...这样,创建的进程才会显示UI界面,与用户进行交互。 在SESSION 0中创建用户桌面进程具体的实现流程如下所示。...获取环境块后,就可以调用CreateProcessAsUser来创建用户桌面进程。CreateProcessAsUser函数的用法以及参数含义与CreateProcess函数的用法和参数含义类似。

4.8K50

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

常规api创建进程 通过常用的api来创建进程是常规启动进程的方式,最常用的几个api有WinExec、ShellExecute、CreateProcess,我们一个一个来看一下 WinExec 首先是...ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制 HINSTANCE ShellExecuteA( [in,...(char* szPath, UINT Cmd){ HINSTANCE hIns = 0; hIns = ::ShellExecute(NULL,NULL,szPath,NULL,NULL,...RING设计的初衷是将系统权限与程序分离出来,使之能够让OS更好的管理当前系统资源,也使得系统更加稳定。...获取环境块之后,就可以调用CreateProcessAsUser来创建用户桌面进程了。

1.4K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ShellExecute使用详解

    有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂,比较少用。...如:WinExec(‘Notepad.exe Readme.txt’, SW_SHOW); 3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。...首先必须引用shellapi.pas单元:uses ShellAPI; 1).标准用法   ShellExecute函数原型及参数含义如下:   function ShellExecute(hWnd...若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。   上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。...同时不改变活动窗口 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 SW_SHOWNORMAL 与SW_RESTORE

    2K10

    ShellExecute, WinExec, CreateProcess区别

    ShellExecute   ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。   ...若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。   上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。...新进程树的用户标识符与这个进程的标识符是相同的,由 lpProcessInformation参数返回。...如果这个参数为空,新进程将使用与调用进程相同的驱动器和目录。这个选项是一个需要启动启动应用程序并指定它们的驱动器和工作目录的外壳程序的主要条件。   ...举例来说,在试图与新进程关联的窗口之前,进程应该先调用 WaitForInputIdle。

    1.4K20

    WinExec、ShellExecute用法详解「建议收藏」

    2、ShellExecute() :   不仅可以运行EXE文件,也可以运行系统已经关联的文件。...ShellExecute的功能要强得多,并且可以完全替代WinExec(),事实上,WinExec()也是为了和以前版本兼容而保留,所以,我们要尽量使用ShellExecute()。   ...首先必须引用shellapi.pas单元:uses ShellAPI; 函数原型: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters...第一次运行程序 时应该使用这个值   若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。...刚才的例子: WinExec(pChar('notepad.exe C:\HDC.TXT'),SW_SHOWNORMAL); 就可以改变为(假设窗口的句柄为Handle) ShellExecute(

    2.5K30

    ShellExecute 启动外部程序 参数详细介绍

    ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。...2原型参数编辑 注意事项:使用该函数时,需添加该头文件:[1]#include ShellExecute函数原型及参数含义如下: ShellExecute( hWnd: HWND...若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。 上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。...格式一:mailto 如:ShellExecute(Handle,"open", "mailto:", NULL, NULL, SW_SHOWNORMAL);打开新邮件窗口。...同时不改变活动窗口 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 SW_SHOWNORMAL 与SW_RESTORE

    4.4K110

    C#.NET基于Topshelf创建Windows服务的守护程序不显示UI界面的问题分析和解决方案

    从Vista 开始Session 0 中只包含系统服务,其他应用程序则通过分离的Session 运行,将服务与应用程序隔离提高系统的安全性。如下图所示: ?...潜在的问题 解决方案 在了解了Session 0 隔离之后,给出一些有关创建服务程序以及由服务托管的驱动程序的建议: 1、与应用程序通信时,使用RPC、命名管道等C/S模式代替窗口消息 2、如果服务程序需要...UI与用户交互的话,有两种方式: ①用WTSSendMessage来创建一个消息框与用户交互 ②使用一个代理(agent)来完成跟用户的交互,服务程序通过CreateProcessAsUser创建代理...在XP的FUS下能工作的服务程序将很可能可以在新版系统中工作,注意XP的FUS下的测试不能检测到在Session 0下跟视频驱动有关的问题 本文我们的服务程序将通过CreateProcessAsUser...CreateProcessAsUser(hUserToken, appPath, // Application Name

    1.6K20

    7.2 通过API创建新进程

    其中,常用的三种创建进程的方式分别是WinExec()、ShellExecute()和CreateProcessA(),这三种创建进程的方式各有特点。...如果需要创建简单进程或从其他程序启动新进程,可以使用WinExec()或ShellExecute()函数。...但是该函数也存在一些问题,例如ANSI编码、不支持进程标识符等,建议在实际开发中使用更为灵活的CreateProcess()或ShellExecute()函数。...ShellExecute()函数的优点是可以控制进程的启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程的方式,比如最大化或最小化窗口,或者在后台启动进程。...NORMAL_PRIORITY_CLASS,表示新进程在普通优先级类中运行lpEnvironment:进程环境空间块的指针,用于设置新进程的环境变量lpCurrentDirectory:指定新进程的初始工作目录,如果为NULL,则使用与调用进程相同的当前目录

    59340

    7.2 通过API创建新进程

    其中,常用的三种创建进程的方式分别是WinExec()、ShellExecute()和CreateProcessA(),这三种创建进程的方式各有特点。...如果需要创建简单进程或从其他程序启动新进程,可以使用WinExec()或ShellExecute()函数。...但是该函数也存在一些问题,例如ANSI编码、不支持进程标识符等,建议在实际开发中使用更为灵活的CreateProcess()或ShellExecute()函数。...ShellExecute()函数的优点是可以控制进程的启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程的方式,比如最大化或最小化窗口,或者在后台启动进程。...NORMAL_PRIORITY_CLASS,表示新进程在普通优先级类中运行 lpEnvironment:进程环境空间块的指针,用于设置新进程的环境变量 lpCurrentDirectory:指定新进程的初始工作目录,如果为NULL,则使用与调用进程相同的当前目录

    50220
    领券