WinDbgのよく使用されるコマンドシリーズ---!住所

!住所

これ!アドレス拡張コマンドは、ターゲットプロセスのメモリまたはターゲットコンピュータに関する情報を表示します。

ユーザモード:

!アドレス住所
-summary対応!
アドレス[-f:F1、F2、...] {[-o:!{csvファイルを| TSV | 1}] | [-c: "コマンド"]} 
アドレス- !?| -助けて

カーネルモード:

!アドレス住所
!アドレス

パラメータ:

  • 住所
    表示のみ領域アドレス空間のアドレスが含まれています。
  • -summary
    要約情報のみを表示します。
  • -f:F1、F2、...
    のみフィルタF1、F2の領域で指定されたショー。
    対象プロセスのメモリ領域で指定されるメモリ領域を使用するには、次のフィルタ値方法。
    フィルタ値 表示メモリ領域

    WHERE

    忙しいエリア。これらの領域は、他のカテゴリに属していないすべての仮想アロケーションブロック、SBHスタック、および他のすべての地域で定義されている自己割り当て手順からメモリアドレス空間が含まれます。

    自由

    無料メモリ。これは、すべてのメモリが保持されていない含まれています。

    画像

    実行可能イメージファイルの一部としてメモリにマップされました。

    スタック

    スレッドスタックのメモリ。

    TEB

    スレッド環境ブロック(TEBの)メモリ。

    私達の

    プロセス環境ブロック(PEB)のメモリを使用してください。

    ヒープ

    ヒープメモリの量は、使用されます。

    ページヒープ

    フルページヒープメモリ領域のため。

    CSR

    CSRは、メモリを共有しました。

    ACTX

    コンテキストデータメモリを活性化するため。

    NLS

    の各国語サポート(NLS)のためのメモリテーブル。

    FILEMAP

    メモリが使用するメモリマップファイル。このフィルタは、唯一のリアルタイムデバッグプロセスに適用されます。


    フィルタ型メモリの値によって指定されたメモリ領域。
    フィルタ値 表示メモリ領域

    MEM_IMAGE

    メモリマップファイルは、実行可能イメージの一部です。

    MEM_MAPPED

    実行可能ファイルへのマッピングは、画像メモリの一部ではありません。これは、メモリのページングファイルにマッピングされています。

    MEM_PRIVATE

    専用メモリ。このメモリは他のプロセスによって共有されていないと、すべてのファイルにマップされていません。


    次のフィルタリング値メモリの状態指定されたメモリ領域に応じ。
    フィルタ値 表示メモリ領域

    MEM_COMMIT

    コミットされたメモリ。

    MEM_FREE

    使用可能なメモリ。これは、すべて予約されていないメモリを含みます。

    MEM_RESERVE

    予約済みメモリ。


    次のメモリ保護指定されたメモリ領域を適用することにより、フィルタ値。
    フィルタ値 表示メモリ領域

    PAGE_NOACCESS

    メモリにアクセスすることができません。

    PAGE_READONLY

    それは読めるが、書き込み可能ではないと非実行可能メモリです。

    PAGE_READWRITE

    それは、読み書き可能だが非実行可能メモリです。

    PAGE_WRITECOPY

    メモリをコピーするときに書き込まれています。

    PAGE_EXECUTE

    これは、実行可能ファイルが、読み取りおよび書き込み不可能なメモリです。

    PAGE_EXECUTE_READ

    これは、実行可能ファイルと読めるが、書き込み可能ではないメモリです。

    PAGE_EXECUTE_READWRITE

    これは、実行可能ファイル、読み書き可能なメモリ必見です。

    PAGE_EXECUTE_WRITECOPY

    これは、実行可能ファイルであり、書き込みメモリコピーの動作を持っています。

    PAGE_GUARD

    メモリ保護は、ページとして機能します。

    PAGE_NOCACHE

    バッファなしメモリ。

    PAGE_WRITECOMBINE

    有効書き込み - メモリがアクセスされます。

  • -o:{CSV | TSV | 1 }
    の出力のいずれかのオプションを表示します。
    オプション 出力フォーマット

    CSV

    カンマの形で表示出力値を分離しました。

    TSV

    タブ区切りのディスプレイ出力値。

    1

    裸のフォーマット出力。このフォーマットとで働く!アドレス入力として使用.foreach

  • -c:"Command"
    为每个内存区域执行自定义命令。您可以在命令中使用以下占位符来表示输出字段!address地址扩展命令。
    占位符 输出字段

    %1

    基址

    %2

    结束地址 + 1

    %3

    区域大小

    %4

    在任务栏的搜索框中键入

    %5

    状态

    %6

    保护

    %7

    用法

    例如,!address -f:Heap -c:".echo %1 %3 %5"基址、 大小和类型的每个内存区域的状态将显示

    在命令中的引号必须加反斜杠 (\")。 例如,! 地址-f: 堆-c:"s-a %1 %2 \"pad\""中搜索类型的每个内存区域"板"的字符串。

    不支持多个命令之间用分号分隔。
  • -?
    在调试器命令窗口中显示此扩展的最小帮助文本。

DLL:

Windows 2000

Ext.dll

Windows XP 及更高版本

Ext.dll

 

没有任何参数!address显示有关整个地址空间的信息。这个!address -summary命令只显示摘要。在内核模式下,此扩展只搜索内核内存,即使使用.process(设置进程上下文)指定给定进程的虚拟地址空间。在用户模式下!address总是指目标进程拥有的内存。 在用户模式下,!address显示指定地址所属区域的特征。没有参数,!address显示所有内存区域的特征。这些特性包括内存使用、内存类型、内存状态和内存保护。有关此信息含义的更多信息,请参阅-f参数说明中的前面的表。

下面的示例使用!用于检索有关映射到kernel32.dll的内存区域的信息的地址。
0:000> !address 75831234
Usage:                  Image
Base Address:           75831000
End Address:            758f6000
Region Size:            000c5000
Type:                   01000000MEM_IMAGE
State:                  00001000MEM_COMMIT
Protect:                00000020PAGE_EXECUTE_READ
More info:              lmv m kernel32
More info:              !lmi kernel32
More info:              ln 0x75831234

此示例使用地址值0x75831234。显示屏显示此地址位于以地址0x75831000开头、以地址0x758F6000结尾的内存区域中。该区域有usage image、type mem_image、state mem_commit和protection page_execute_read。(有关这些值的详细信息,请参阅前面的表。)该显示还列出了三个其他调试器命令,您可以使用这些命令来获取有关此内存地址的更多信息。 如果您从一个地址开始并试图确定关于它的信息,那么使用信息通常是最有价值的。了解用法后,可以使用其他扩展来了解有关此内存的更多信息。例如,如果用途是heap,则可以使用!heap扩展命令以了解更多信息。

下面的示例使用s(search memory)命令在类型为image的每个内存区域中搜索宽字符串“note”。
!address /f:Image /c:"s -u %1 %2 \"Note\""

*** Executing: s -u 0xab0000 0xab1000 "Note"
*** Executing: s -u 0xab1000 0xabc000 "Note"
00ab2936  004e 006f 0074 0065 0070 0061 0064 0000  N.o.t.e.p.a.d...
00ab2f86  004e 006f 0074 0065 0070 0061 0064 005c  N.o.t.e.p.a.d.\.
00ab32e4  004e 006f 0074 0065 0070 0061 0064 0000  N.o.t.e.p.a.d...
*** Executing: s -u 0xabc000 0xabd000 "Note"
. . .
在内核模式下,输出!address与用户模式输出类似,但包含的信息较少。下面的示例显示内核模式输出。
kd> !address
  804de000 - 00235000                           
 Usage       KernelSpaceUsageImage
          ImageName   ntoskrnl.exe

  80c00000 - 001e1000
          Usage       KernelSpaceUsagePFNDatabase

....

  f85b0000 - 00004000
          Usage       KernelSpaceUsageKernelStack
          KernelStack 817b4da0 : 324.368

 f880d000 - 073d3000
          Usage       KernelSpaceUsageNonPagedPoolExpansion
“用法”的含义与用户模式相同。imagename“表示与此地址关联的模块。” kernelstack“显示这个线程的ethread块(0x817b4da0)、进程id(0x324)和线程id(0x368)的地址。

おすすめ

転載: www.cnblogs.com/yilang/p/11563411.html