未文档化资料

备注 网站
内核结构 https://www.vergiliusproject.com/kernels
堪比MSDN https://www.geoffchappell.com/
NTDLL函数 http://undocumented.ntinternals.net/
ReactOS文档 https://doxygen.reactos.org/
反调试 https://anti-debug.checkpoint.com/

MSDN

备注 网站
格式规范语法 https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions?view=msvc-170
Windows 数据类型 https://docs.microsoft.com/zh-cn/windows/win32/winprog/windows-data-types
x64 软件约定 https://docs.microsoft.com/zh-cn/cpp/build/x64-software-conventions?view=msvc-170
x64 调用约定 https://docs.microsoft.com/zh-cn/cpp/build/x64-calling-convention?view=msvc-170
x64 堆栈使用 https://docs.microsoft.com/zh-cn/cpp/build/stack-usage?view=msvc-170
驱动程序签名策略 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later-
逐函数优化 https://docs.microsoft.com/zh-cn/cpp/preprocessor/optimize?view=msvc-170
x64 内部函数列表 https://docs.microsoft.com/zh-cn/cpp/intrinsics/x64-amd64-intrinsics-list?view=msvc-170
代码片段Snippets https://docs.microsoft.com/zh-cn/visualstudio/ide/code-snippets-schema-reference?view=vs-2022
调试器的符号路径 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/symbol-path
结构化异常处理(SEH) https://docs.microsoft.com/zh-cn/cpp/cpp/structured-exception-handling-c-cpp?view=msvc-170
预定义宏 https://docs.microsoft.com/zh-cn/cpp/preprocessor/predefined-macros?view=msvc-170
可变参数宏 https://docs.microsoft.com/zh-cn/cpp/preprocessor/variadic-macros?view=msvc-170
调试相关宏 https://docs.microsoft.com/en-us/previous-versions/windows/hardware/previsioning-framework/ff542107(v=vs.85)
1
2
NT_ASSERT(NT_SUCCESS(status));
ASSERT(NT_SUCCESS(status));
1
2
3
#pragma optimize( "", off )
/* unoptimized code section */
#pragma optimize( "", on )

内核函数

函数 功能
NtQuerySystemInformation 查询内核重要信息

字符串操作 (CRT)

原始字符char * wcs,_wcs(宽字符wchar_t *) _mbs(多字节字符unsigned char *)

功能 函数
复制字符串 strcpy、wcscpy、_mbscpy
拼接字符串 strcat、wcscat、_mbscat
拼接字符串(多一个长度参数) strncat、wcsncat、_mbsncat
字符串长度 strlen、wcslen、_mbslen
字符搜索 strchr、wcschr、_mbschr
字符串搜索 strstr、wcsstr、_mbsstr
转换大写 _strupr、_wcsupr、_mbsupr
转换小写 _strlwr、_wcslwr、_mbslwr
字符串比较 函数
区分大小写 strcmp、wcscmp、_mbscmp
不区分大小写 _stricmp、_wcsicmp、_mbsicmp
指定数量的字符串比较 函数
区分大小写 strncmp、wcsncmp、_mbsncmp
不区分大小写 _strnicmp、_wcsnicmp、_mbsnicmp

Byte - 8 bits 字节 Word - 16 bits 字 DoubleWord - 32 bits 双字 QuadWord - 64 bits 四字 OctaWord - 128 bits 八倍长字

标量类型 C 数据类型 大小(字节) 建议对齐方式
INT8 char 1 Byte
UINT8 unsigned char 1 Byte
INT16 short 2 Word
UINT16 unsigned short 2 Word
INT32 int, long 4 Dword
UINT32 unsigned int, unsigned long 4 Dword
INT64 __int64 8 Qword
UINT64 unsigned __int64 8 Qword
FP32 (single precision) float 4 Dword
FP64 (double precision) double 8 Qword
POINTER * 8 Qword
__m64 struct __m64 8 Qword
__m128 struct __m128 16 Oword

数据类型__int8__int16__int32是具有相同大小的ANSI数据类型的同义词,对于编写在多个平台上行为相同的可移植代码非常有用。 __int8=char __int16=short __int32=int __int64=long long 为了与早期版本兼容,除非指定了"禁用语言扩展 /Za"编译器选项。 _int8=__int8 _int16=__int16 _int32=__int32 _int64=__int64

[[Windows Kernel Programming 笔记#3 3 内核 API]]

前缀 内核组件 示例例程
Cm 配置管理器 CmRegisterCallbackEx
Ex 执行函数 ExAllocatePool
Hal 硬件抽象层 HalGetAdapter
Io I/O 管理器 IoAllocateIrp
Ke 内核函数 KeSetEvent
Mm 内存管理器 MmUnlockPages
Ob 对象管理器 ObReferenceObject
Po 电源管理 PoSetPowerState
Tm 事务管理器 TmCommitTransaction
Nt and Zw Native系统服务 NtCreateFile and ZwCreateFile