WinDBG技巧:列出当前进程所有装载的模块(DLL/EXE)

简介:
调试的时候想要知道当前进程装载了哪些模块,每个模块被装载的代码地址段是在哪个范围,可以使用lm命令。 拿notepad为例,输入lm命令可以发现:
0:001> lm
start    end        module name
00830000 00858000   notepad    (pdb symbols)          c:\debuggers\externalsymbols\notepad.pdb\7DAC7B3D7D1D4E68BE2132EAB080D42C2\notepad.pdb
70990000 709d2000   WINSPOOL   (export symbols)       C:\Windows\system32\WINSPOOL.DRV
738c0000 738ff000   uxtheme    (pdb symbols)          c:\debuggers\externalsymbols\UxTheme.pdb\D6B5A4E899AF4946BA6E4611D58409C02\UxTheme.pdb
74a80000 74c1d000   COMCTL32   (export symbols)       C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.16497_none_5cc0004408832c27\COMCTL32.dll
75e30000 75e7b000   GDI32      (export symbols)       C:\Windows\system32\GDI32.dll
75ec0000 75f32000   COMDLG32   (export symbols)       C:\Windows\system32\COMDLG32.dll
75f40000 75fdd000   USER32     (pdb symbols)          c:\debuggers\externalsymbols\user32.pdb\750E7375884C4EA592C8B0C8ADB018542\user32.pdb
(....省略)
从上面结果可以看出,uxtheme.dll 模块被装载在地址738c0000 ~ 738ff000 。
另外,使用命令 lmf 可以显示每个DLL/EXE 的具体路径。
如果lm列表很长,希望过滤出自己感兴趣的模块,可以使用lm m 表达式 命令。
0:001> lm m *theme*
start    end        module name
738c0000 738ff000   uxtheme    (pdb symbols)          c:\debuggers\externalsymbols\UxTheme.pdb\D6B5A4E899AF4946BA6E4611D58409C02\UxTheme.pdb
如果想要了解该模块的详细信息(比如版本,日期等)还可以加上v选项,使用lmvm 命令:
0:001> lmvm *theme*
start    end        module name
738c0000 738ff000   uxtheme    (pdb symbols)          c:\debuggers\externalsymbols\UxTheme.pdb\D6B5A4E899AF4946BA6E4611D58409C02\UxTheme.pdb
    Loaded symbol image file: C:\Windows\system32\uxtheme.dll
    Image path: C:\Windows\system32\uxtheme.dll
    Image name: uxtheme.dll
    Timestamp:        Fri Jan 18 23:32:10 2008 (4791A77A)
    CheckSum:         0004868F
    ImageSize:        0003F000
    File version:     6.0.6001.18000
    Product version:  6.0.6001.18000
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      Microsoft® Windows® Operating System
    InternalName:     UxTheme.dll
    OriginalFilename: UxTheme.dll
    ProductVersion:   6.0.6001.18000
    FileVersion:      6.0.6001.18000 (longhorn_rtm.080118-1840)
    FileDescription:  Microsoft UxTheme Library
    LegalCopyright:   © Microsoft Corporation. All rights reserved.
想要了解该uxtheme.dll 的详细调试文件(PDB)信息,可以使用!lmi 命令:
0:001> !lmi uxtheme
Loaded Module Info: [uxtheme] 
         Module: uxtheme
   Base Address: 738c0000
     Image Name: C:\Windows\system32\uxtheme.dll
   Machine Type: 332 (I386)
     Time Stamp: 4791a77a Fri Jan 18 23:32:10 2008
           Size: 3f000
       CheckSum: 4868f
Characteristics: 2102  perf
Debug Data Dirs: Type  Size     VA  Pointer
             CODEVIEW    24, 375a0,   369a0 RSDS - GUID: {D6B5A4E8-99AF-4946-BA6E-4611D58409C0}
               Age: 2, Pdb: UxTheme.pdb
                CLSID     4, 3759c,   3699c [Data not mapped]
     Image Type: FILE     - Image read successfully from debugger.
                 C:\Windows\system32\uxtheme.dll
    Symbol Type: PDB      - Symbols loaded successfully from symbol server.
                 c:\debuggers\externalsymbols\UxTheme.pdb\D6B5A4E899AF4946BA6E4611D58409C02\UxTheme.pdb
    Load Report: public symbols , not source indexed 
                 c:\debuggers\externalsymbols\UxTheme.pdb\D6B5A4E899AF4946BA6E4611D58409C02\UxTheme.pdb



 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273939,如需转载请自行联系原作者

相关文章
|
4月前
|
数据采集 并行计算 安全
Python并发编程:多进程(multiprocessing模块)
在处理CPU密集型任务时,Python的全局解释器锁(GIL)可能会成为瓶颈。为了充分利用多核CPU的性能,可以使用Python的multiprocessing模块来实现多进程编程。与多线程不同,多进程可以绕过GIL,使得每个进程在自己的独立内存空间中运行,从而实现真正的并行计算。
|
4月前
|
存储 安全 Python
[python]使用标准库logging实现多进程安全的日志模块
[python]使用标准库logging实现多进程安全的日志模块
|
5月前
|
Unix Linux Python
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
|
5月前
|
Python
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
|
5月前
|
Python
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
|
7月前
|
数据采集 Java Python
python并发编程:使用多进程multiprocessing模块加速程序的运行
python并发编程:使用多进程multiprocessing模块加速程序的运行
149 1
|
7月前
|
消息中间件 监控 JavaScript
Node.js中的进程管理:child_process模块与进程管理
【4月更文挑战第30天】Node.js的`child_process`模块用于创建子进程,支持执行系统命令、运行脚本和进程间通信。主要方法包括:`exec`(执行命令,适合简单任务)、`execFile`(安全执行文件)、`spawn`(实时通信,处理大量数据)和`fork`(创建Node.js子进程,支持IPC)。有效的进程管理策略涉及限制并发进程、处理错误和退出事件、使用流通信、谨慎使用IPC以及监控和日志记录,以确保应用的稳定性和性能。
|
7月前
|
Java Python
使用Python的concurrent.futures模块简化多线程与多进程编程
使用Python的concurrent.futures模块简化多线程与多进程编程
105 0
|
7月前
|
并行计算 程序员 API
Python多进程编程:利用multiprocessing模块实现并行计算
Python多进程编程:利用multiprocessing模块实现并行计算
840 0
|
安全
驱动开发:取进程模块的函数地址
在笔者上一篇文章`《驱动开发:内核取应用层模块基地址》`中简单为大家介绍了如何通过遍历`PLIST_ENTRY32`链表的方式获取到`32位`应用程序中特定模块的基地址,由于是入门系列所以并没有封装实现太过于通用的获取函数,本章将继续延申这个话题,并依次实现通用版`GetUserModuleBaseAddress()`取远程进程中指定模块的基址和`GetModuleExportAddress()`取远程进程中特定模块中的函数地址,此类功能也是各类安全工具中常用的代码片段。
246 0