最新消息:本站技术交流 QQ 群:28124927

DbgPrint 格式字符串

Rootkit/驱动底层 exchen 2079浏览 0评论

1) 直接打印字符串。
DbgPrint(“Hello World!”);

2) 空结尾的字符串,你可以用普通得C语法表示字符串常量
char variable_string[] = “Hello World”;
DbgPrint(“%s”,variable_string);

3) 空结尾的宽字符串(WCHAR类型)
WCHAR string_w[] = L“Hello World!”;
DbgPrint(“%ws”,string_w);
或者
DbgPrint(“%S”,string_w);

4)Unicode串,由UNICODE_STRING结构描述,包含16位字符。

typedef struct _UNICODE_STRING{
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
}UNICODE_STRING , *PUNICODE_STRING;

UNICODE_STRING string_unicode = L”Hello World!”;
DbgPrint(“%wZ\n”,string_unicode.Buffer);

5) ANSI串,由ANSI_STRING结构描述,包含8位字符。

typedef struct _STRING{
USHORT Length;
USHORT MaximumLength;
PCHAR Buffer;
}STRING, *PANSI_STRING;

或者:ANSI_STRING bar;
RtlInitAnsiString(&bar,”Hello World!”);
DbgPrint(“%wz\n”,bar.Buffer);

DebugPrint格式说明符

符号 格式说明符 类型

%c, %lc ANSI字符 char

%C, %wc 宽字符 wchar_t

%d, %i 十进制有符号整数 int

%D 十进制_int64 _int64

%L 十六进制的LARGE_INTEGER LARGE_INTEGER

%s, %ls NULL终止的ANSI字符串 char*

%S, %ws NULL终止的宽字符串 wchar_t*

%Z ANSI_STRING字符串

%wZ UNICODE_STRING字符串

%u 十进制的ULONG ULONG

%x 小写字符十六进制的ULONG ULONG

%X 大写字符十六进制的ULONG ULONG

%p 指针Pointer 32/64位

根据DDK上说明,Unicode格式(%C, %S, %lc, %ls, %wc, %ws, and %wZ)只能在 IRQL = PASSIVE_LEVEL时才能使用.

转载请注明:exchen's blog » DbgPrint 格式字符串

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址