部分API函数及参数说明.docx
- 文档编号:12532949
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:10
- 大小:18.79KB
部分API函数及参数说明.docx
《部分API函数及参数说明.docx》由会员分享,可在线阅读,更多相关《部分API函数及参数说明.docx(10页珍藏版)》请在冰豆网上搜索。
部分API函数及参数说明
一、CreateFileForMapping
函数名称:
CreateFileForMapping
系统要求:
WindowsCE1.01andlater.
头文件:
Winbase.h.
链接库:
Coredll.lib
函数功能:
生成用于映射的文件句柄。
参数:
第1个参数:
LPCTSTRlpFileName
文件名指针。
第2个参数:
DWORDdwDesiredAccess
文件访问模式。
GENERIC_READ、GENERIC_WRITE等。
第3个参数:
DWORDdwShareMode
共享模式,不支持。
忽略设置为0。
第4个参数:
LPSECURITY_ATTRIBUTESlpSecurityAttributes
不支持。
为NULL。
第5个参数:
DWORDdwCreationDisposition
生成方式。
第6个参数:
DWORDdwFlagsAndAttributes
文件标志和属性。
第7个参数:
HANDLEhTemplateFile
临时文件句柄。
忽略。
返回值:
成功:
映射文件句柄。
失败:
INVALID_HANDLE_VALUE。
说明:
01.桌面平台没有专门用于映射文件句柄生成的函数,直接用CreateFile就
可以了。
二、 NtGdiSendInput、NtSetWindowsHookEx
GDI函数:
分别用于拦截键盘鼠标模拟输入和全局钩子
三、 ZwCreateFile
原型:
NTSYSAPI
NTSTATUS
NTAPI
ZwCreateFile(
OUTPHANDLEFileHandle,
INACCESS_MASKDesiredAccess,
INPOBJECT_ATTRIBUTESObjectAttributes,
OUTPIO_STATUS_BLOCKIoStatusBlock,
INPLARGE_INTEGERAllocationSizeOPTIONAL,
INULONGFileAttributes,
INULONGShareAccess,
INULONGCreateDisposition,
INULONGCreateOptions,
INPVOIDEaBufferOPTIONAL,
INULONGEaLength
);
参数理解:
OUT-
FileHandle--------这是一个指向一个变量的指针,用来最后存放fileobjecthandle的
IoStatusBlock-----这个也是个指针变量,指向一个叫做IO_STATUS_BLOCK的结构体,最后函数返回的时候,这个结构体的成员里面要填充一些值,具体的呢就是完成状态,请求操作的一些信息,最重要的一个成员就是Information成员,他显示了函数对文件的处理方式,他的值可能是下面的几个:
FILE_SUPERSEDED(替代)
FILE_OPENED(打开)
FILE_CREATED(创建)
FILE_OVERWRITTEN(重写)
FILE_EXISTS(存在)
FILE_DOES_NOT_EXIST(文件不存在)
再看下这个IO_STATUS_BLOCK的具体结构:
typedefstruct_IO_STATUS_BLOCK{
union{
NTSTATUSStatus;
PVOIDPointer;
}DUMMYUNIONNAME;
ULONG_PTRInformation;
}IO_STATUS_BLOCK,*PIO_STATUS_BLOCK;
通过上述的两个输出的参数我们可以看到,这个ZwCreateFile函数就是返回创建好的文件对象的句柄,然后返回一个期间处理的方式。
IN-
DesiredAccess----这个参数指定一个访问权限,大概有以下的权限:
FILE_ANY_ACCESS0x0000//anytype
FILE_READ_ACCESS0x0001//file&pipe
FILE_READ_DATA0x0001//file&pipe
FILE_LIST_DIRECTORY0x0001//directory
FILE_WRITE_ACCESS0x0002//file&pipe
FILE_WRITE_DATA0x0002//file&pipe
FILE_ADD_FILE0x0002//directory
FILE_APPEND_DATA0x0004//file
FILE_ADD_SUBDIRECTORY0x0004//directory
FILE_CREATE_PIPE_INSTANCE0x0004//namedpipe
FILE_READ_EA0x0008//file&directory
FILE_WRITE_EA0x0010//file&directory
FILE_EXECUTE0x0020//file
FILE_TRAVERSE0x0020//directory
FILE_DELETE_CHILD0x0040//directory
FILE_READ_ATTRIBUTES0x0080//alltypes
FILE_WRITE_ATTRIBUTES0x0100//alltypes
FILE_ALL_ACCESS//Allofthepreceding+
STANDARD_RIGHTS_ALL
最后一个权限最大
这里面要注意的是范围问题,有的值只适合目录,有的只适合管道,有的只适合命名管道,有的同时适用,想下这个地方可以做什么文章
ObjectAttributes---指向下面这个结构的一个变量,就是来表明文件对象的属性的。
typedefstruct_OBJECT_ATTRIBUTES{
ULONGLength;
HANDLERootDirectory;
PUNICODE_STRINGObjectName;
ULONGAttributes;
PVOIDSecurityDescriptor;/*typeSECURITY_DESCRIPTOR*/
PVOIDSecurityQualityOfService;/*typeSECURITY_QUALITY_OF_SERVICE*/
}OBJECT_ATTRIBUTES,*POBJECT_ATTRIBUTES;
AllocationSize---这是个可选的参数,他是指定初始化文件需要的内存字节数的,所以可向而知,他只有在真正的涉及到文件创建的时候才有意义,也就是说创建,重写,替换这些操作的时候。
指向一个LARGE_INTEGER:
typedefunion_LARGE_INTEGER{
_ANONYMOUS_STRUCTstruct
{
ULONGLowPart;
LONGHighPart;
}DUMMYSTRUCTNAME;
struct
{
ULONGLowPart;
LONGHighPart;
}u;
#endif//MIDL_PASS
LONGLONGQuadPart;
}LARGE_INTEGER,*PLARGE_INTEGER;
FileAttributes---这个参数指定文件的属性,刚才是文件对象的属性。
可以是以下的:
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_TEMPORARY
FILE_ATTRIBUTE_SPARSE_FILE
FILE_ATTRIBUTE_REPARSE_POINT
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
FILE_ATTRIBUTE_ENCRYPTED
ShareAccess---指定共享的权限,以下三种的组合:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
CreateDisposition---这个参数指定要对文件干嘛,呼呼,可以是下面的值:
FILE_SUPERSEDE
FILE_OPEN
FILE_CREATE
FILE_OPEN_IF
FILE_OVERWRITE
FILE_OVERWRITE_IF
CreateOptions---这个参数指定创建或者打开文件的时候做的一些事情,可以是以下的组合:
FILE_DIRECTORY_FILE
FILE_WRITE_THROUGH
FILE_SEQUENTIAL_ONLY
FILE_NO_INTERMEDIATE_BUFFERING
FILE_SYNCHRONOUS_IO_ALERT
FILE_SYNCHRONOUS_IO_NONALERT
FILE_NON_DIRECTORY_FILE
FILE_CREATE_TREE_CONNECTION
FILE_COMPLETE_IF_OPLOCKED
FILE_NO_EA_KNOWLEDGE
FILE_OPEN_FOR_RECOVERY
FILE_RANDOM_ACCESS
FILE_DELETE_ON_CLOSE
FILE_OPEN_BY_FILE_ID
FILE_OPEN_FOR_BACKUP_INTENT
FILE_NO_COMPRESSION
FILE_RESERVE_OPFILTER
FILE_OPEN_REPARSE_POINT
FILE_OPEN_NO_RECALL
FILE_OPEN_FOR_FREE_SPACE_QUERY
这个我不太清楚,概念有点模糊
EaBuffer---这个是个可选的参数,用来存放一些扩展的属性
EaLength---存放扩展属性的字节大小
四、ZwOpenFile
ZwOpenFile是一个内核函数,写驱动时使用。
打开一个现有的文件,目录,设备,或卷。
函数原型:
编辑
NTSTATUSZwOpenFile(
OUTPHANDLEFileHandle,
INACCESS_MASKDesiredAccess,
INPOBJECT_ATTRIBUTESObjectAttributes,
OUTPIO_STATUS_BLOCKIoStatusBlock,
INULONGShareAccess,
INULONGOpenOptions
);
参数介绍:
编辑
FileHandle
输出参数。
返回打开文件的句柄。
DesiredAccess
输入参数。
打开的权限,一般设为GENERIC_ALL。
全部权限参考MSDN。
ObjectAttributes
输入参数。
OBJECT_ATTRIBUTES结构。
IoStatusBlock
输出参数。
指向一个结构体的指针。
该结构体指明打开文件的状态。
ShareAccess
输入参数。
共享的权限。
可以是FILE_SHARE_READ或者FILE_SHARE_WRITE。
OpenOptions
输入参数。
打开选项,一般设为FILE_SYNCHRONOUS_IO_NONALERT。
返回值编辑
NTSTATUS指明文件是否被成功打开。
五、zwSetSystemInformation
zwSetSystemInformation函数是个未公开的函数,调用38号会加载驱动,对应的第二个参数为SYSTEM_LOAD_AND_CALL_IMAGE结构体,第三个参数为SYSTEM_LOAD_AND_CALL_IMAGE结构体的长度
六、SetWindowsHookEx
外文名SetWindowsHookEx
介 绍Windows消息处理机制的一个平台
方 式系统调用
钩子链表指针列表
原型编辑
SetWindowsHookEx(WH_KEYBOARD,KeyBoardProc,HInstance,0);
七、ZwLoadDriver
该函数用于在内核模式或驱动程序中动态加载一个已被正确注册的驱动例程。
函数原型编辑
NTSTATUS
ZwLoadDriver(
INPUNICODE_STRING DriverServiceName
);
函数说明编辑
参数说明
DriverServiceName:
一个指向驱动程序注册表键Unicode字串的指针,该注册表键位于"\Registry\Machine\System\CurrentControlSet\Services\DriverName"(一般位于HKEY_LOCAL_MACHINE主键下),DriverName是该驱动的注册名
七、ZwCreateKey
创建一个注册表键
ZwCreateKey函数既可以打开已存在键又可以创建新键。
这两个函数都需要事先用键名以及某些其它信息初始化一个OBJECT_ATTRIBUTES结构。
OBJECT_ATTRIBUTES结构的声明如下:
typedefstruct_OBJECT_ATTRIBUTES{
ULONGLength;
HANDLERootDirectory;
PUNICODE_STRINGObjectName;
ULONGAttributes;
PVOIDSecurityDescriptor;
PVOIDSecurityQualityOfService;
}OBJECT_ATTRIBUTES;
八、ZwCreateKey
删除一个注册表键
九、ZwTerminateProcess
一般的进程管理器使用WIN32API的OpenProcess和TerminateProcess或NATIVEAPI的ZwOpenProcess和ZwTerminateProcess函数来打开和终止进程
十、ZwWriteProcessMemory
防止远程线程注入
十一、NtSystemDebugControl
NtSystemDebugControl是WindowsNT系列操作系统上实现的一个系统调用,在不
同系统上的调用号分别为:
WindowsNT 0xba
Windows2000 0xde
WindowsXP 0xff
Windows2003 0x108
NtSystemDebugControl(
INSYSDBG_COMMANDCommand,
INPVOIDInputBuffer,
INULONGInputBufferLength,
OUTPVOIDOutputBuffer,
INULONGOutputBufferLength,
OUTPULONGReturnLength
);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部分 API 函数 参数 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)