氧化铁红厂家
免费服务热线

Free service

hotline

010-00000000
氧化铁红厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

图term上海零食批发市场inateprocess黑客手册第十四课进程-【xinwen】

发布时间:2021-10-12 11:31:28 阅读: 来源:氧化铁红厂家

黑客手册第十四课进程

本课中我们将学习:什么是进程?如何产生和终止

例子 个进程?

初步知识:

进程是什么?下面是我从WIN32 API指南中节选的解释: "一个进程是一个正在执行的应用程序,它包含有:私有的虚拟地址空间、代码、数据和其它的操作系统资源,譬如进程可以存取的管道、文件和同步对象等等。"

从上面的定义中您可以看到,一个进程拥有几个对象:地址空间、执行模块和其它该执行程序打开或创建的任何对象或资源。至少,一个进程必须包含可执行模块、私有的地址空间和一个以上的线稽。什么是线理呢?一个线程实际上是一个执行单元。当WINDOWS产生一个进程时,它自动为该进程产生一个主线稽。该线理通常从模块的第一条指令处开始执行。如果进程需要更多的线稽,它可以随后显式地产生。

当WINDWOS接收到产生进程的消息时,它会为进程生成私有内存地址空间,接着把可执行文件映射到该空间。在WIN32下为进程产生了主进程后,您还可以调用函数CreateProcess来为您的进程产生更多的线稽。

CreateProcess的原型如下:

CreateProcessprotolpApplicationName:DWORD,\

lpCommandLine:DWORD,\

lpProcessAttributes:DWORD,\

lpThreadAttributes:DWORD,\

blnheritHandles:DWORD,\

dwCreationFlags:DWORD,\

lpEnvironment:DWORD,\

lpCurrentDirectory:DWORD,\

lpStartuplnfo:DWORD,\

lpProcesslnformation:DWORD

不要被这么多的参数吓倒,其实您可以忽略其中的大多数的参数(让它们有缺省值)。

lpApplicationName-->可执行文件的名称(含或不含路径)。如果该参数为NULL,那必须在参数lpCommandLine中传递文件名称。

lpCommandLine-->传递给欲执行的文件的命令行参数。如果lpApplicationName为NULL,那 必须在该参数中指定,譬如: "notepad.exereadme.txt" 。

lpProcessAttril:旧tes和lpthreadAttributes-->指定进程和主线梧的安全属性。您可以把它们都设成为NULL,这样就设置了缺省的安全属性。

blnheritHandles-->标志位。用来设置新进程是否继承创建进程所有的打开句柄。dwCreationFlags-->有几个标志可以在此处设置以决定欲创建进程的行为,譬如:您可能想创建进程后并不想让它立刻运行,这样在它真正运行前可以作 些检查和修改工作。您还可以在此处设置新进程中的所有线梧的优先级,通常我们把它设置为

NORMAL PRIORITYCLASS。

lpEnvironment-->指向环境块的指针,一般地环境块包含几个环境字符串。如果该参数为 NULL,那么新进程继承创建进程的环境块。

terminateprocess 黑客手册第十四课 进程

lpCurrentDirectory-->指向当前目录以及为子进程设置的"当前目录"的路径。如果为 阳LL,则继承创建进程的"当前目录"路径。 lpStartuplnfo-->指向新进程的启动结构体STARTUPIN刊的指针。STARTUPINFO告诉WINDOWS 如何显示新进程的外观。该参数有许多的成员变量,如果您不想新进程有什么的特别之处, 可以调用GetStartuplnfo函数来用创建进程的启动参数来填充STARTUPINFO结构体变量。 lpProcesslnformation-->指向结构体PROCESSINFORMATION的指针,该结构体变量包含了 一些标识该进程唯一性的一些成员变量:

PROCESS INFO酬ATIONSTRUCT

HANDLE ? hProcess

process

hThread HANDLE ?

threadof the childprocess

dwProcessld DWORD ?

dwThreadld DWORD ?

thechild process

PROCESS INFO酬ATIONENDS ; handletothechild ; h田ldletotheprimary ID ofthechild process ID ofthe primarythread of

进程句柄和进程ID是两个不同的概念。进程ID好似个唯 值,而进程句柄是调用相关的WINDOWS API 后得到的个返回值。不能用进程句柄来标识个进程的唯性,因为这个值并不唯 。在调用CreateProcess产生新进程后,该进程就被创建,而且CerateProcess函数立即返回。您可以调用函数GetExitCodeProcess来检验进程是否结束。该函数的原型如下: GetExitCodeProcessproto hProcess:DWORD,lpExitCode:DWORD 如果调用成功,lpExitCode中包含了所查询进程的状态码。如果等于STILL ACTIVE就表明该进程依旧存在。您可以调用函数TerminateProcess来强制终止 个进程。该函数的原型如下:

TerminateProcessproto hProcess:DWORD,uExitCode:DWORD

您可以指定任意 个退出值。用该函数结束

并不会得到进程正退出的消息。

个进程并不好,因为该进程加载的动态连接库

例子:

在下面的例子中,当用户选择菜单项"crateprocess"时我们创建个新进程。它会去执行""msgbox.exe"。如果用户想要终止新进程,可以选择菜单项"terminateprocess"。这时,应用程序检查欲终止的进程是否仍存在,若存在则调用TerminateProcess函数来终止它。 .386

.model flat,stdcall

option casemap:none

WinMainproto:DWORD,:DWORD,:DWORD,:DWORD

include \masm32\include\windows.inc

include

\masm32\include\user32.incinclude

\masm32\include\kerne132.incincludeli

b\masm32\lib\user32.libincludelib\mas

m32\lib\kerne132.1ib

.const

terminateprocess 黑客手册第十四课 进程

IDM CREATE PROCESSequ1

IDMTERMINATE equ2

IDMEXIT equ3

.data ClassNamedb"Win32ASMProcessClass",0 AppName db"Win32 ASM ProcessExample",0 MenuNamedb"FirstMenu",0 processlnfoPROCESSINFORMATION programnamedb"msgbox.exe",0

.data?

hlnstanceHINSTANCE ? CommandLineLPSTR? hMenuHANDLE?

ExitCodeDWORD ?

GetExitCodeProcesscall. containstheprocessexitcodestatus from

.codes tart: invokeGetModuleHandle,NULL mov hlnstance,eaxinvoke GetCommandLinemovCommandLine,eax invokeWinMain,hlnstance,NULL,CommandLine,SWSHOWDEFAULT invokeExitProcess,eax

干细胞抗衰老中心

北京301医院干细胞价格

北京治胃癌好的医院

北京治疗无精多少钱