zoukankan      html  css  js  c++  java
  • 如何从转储文件确定 /LARGEADDRESSAWARE

    有时在调试时,您希望知道某个特定进程是否使用 /LARGEADDRESSAWARE标志链接,从而能够使用高于2Gb边界的用户模式地址。我的解决方案是:
    !address -summary将显示进程的有效用户模式地址空间:

    0:022> !address –summary
    ..
           Tot: 7fff0000 (2097088 KB) Busy: 278fd000 (648180 KB) <<< 2Gb for non-large-address-aware EXE or large address aware EXE on x86 system without /3Gb in boot.ini


    或者


    Tot: bd7f0000 (3104704 KB) Busy: 23dee000 (587704 KB) <<< 3Gb for large-address-aware EXE on x86 system with /3Gb in boot.ini


    或则


    Tot: ffff0000 (4194240 KB) Busy: 268b2000 (631496 KB) <<< 4Gb for large-address-aware EXE running with WoW64 on x64 system


    但是,由于第一种情况不明确,要实际查看EXE是否与/LargeAddressware链接,请执行以下操作:


        0:000> !dlls -c inetinfo    <<< inetinfo is the module name of the EXE in this case]
        Dump dll containing 0x01000000:

        0x00081eb0: C:WINDOWSsystem32inetsrvinetinfo.exe
              Base   0x01000000  EntryPoint  0x0100326e  Size        0x00006000
              Flags  0x00004000  LoadCount   0x0000ffff  TlsIndex    0x00000000
                     LDRP_ENTRY_PROCESSED
        0:000> .shell -i - -ci "!dlls -f 0x00081eb0" FIND "characteristics"
             12F characteristics
    特征字段是:0x12f&0x20==0x20。这是IMAGE_FILE_LARGE_ADDRESS_AWARE的值。–有关此定义和相关定义,请参阅平台SDK中的winnt.h。
    所以这个EXE可以识别大地址。
    注意,上面使用的.shell命令(用于shell到另一个EXE,在本例中是“FIND”)是我一直用来过滤调试器命令输出的内容。非常方便。

  • 相关阅读:
    数据库Connection.OPEN()异常情况下 耗时很久才回应
    System.Threading.Tasks.TaskExceptionHolder.Finalize() 系统错误c#
    WCF双向通讯netTCP
    并行LINQ PLinq
    winform调用http
    kindle电子书的资源网站
    vscode设置中文语言
    Python拼接路径
    Python查看已安装模块
    Python查看模块版本
  • 原文地址:https://www.cnblogs.com/yilang/p/13919449.html
Copyright © 2011-2022 走看看