lm命令没有显示正确的模块

时间:2017-10-01 02:15:34

标签: windbg dllimport

我使用WinDbg分析Adobe Acrobat Reader,AcroRd32.exe。我想看看AcroRd32.exe加载了哪些模块(与AcroRd.exe在同一目录中的.dll模块)。

我使用WinDbg监控打开PDF文件,然后使用lm命令显示已加载的模块。但是,没有与AcroRd32.exe具有相同目录的模块(.DLL)。

这是否意味着AcroRd32.exe没有使用这些DLL?为了验证我的假设,我删除了与AcroRd32.exe在同一目录中的所有DLL文件。然后AcroRd32.exe无法正常启动。这意味着AcroRd32.exe需要这些DLL。但是为什么WinDbg的lm命令没有显示这些DLL模块?

1 个答案:

答案 0 :(得分:1)

Acrobat Reader会启动另一个实例。您需要调试第二个实例以查看正在加载的模块:

import time
from multiprocessing import Pool

def do_work(msg):
    # do some work


if __name__ == '__main__':
    consumer = KafkaConsumer(
    group_id=worker_config.kafka_group_id,
    bootstrap_servers=kafka_url,
    auto_offset_reset=worker_config.kafka_reset,
    enable_auto_commit=True)
    consumer.subscribe(topics=worker_config.kafka_topics)

    for message in consumer:
        logging.info('topic=%s, partition=%d, msg=%s' % (message.topic, message.partition, msg))
        pool.apply_async(do_work, (message,))
        process_count = number_of_active_process_of_pool
        logging.info("number_of_active_process_number is %d", process_count)


    pool.close()
    pool.join()

此时,第二个实例将开始。

ntdll!LdrpDoDebuggerBreak+0x2b:
77e9db9b cc              int     3
0:000> .childdbg 1
Processes created by the current process will be debugged    
0:000> sxe cpr
0:000> g
[...]
Executable search path is: 
ModLoad: 00c20000 00e45000   AcroRd32.exe

如果在加载Acrobat Reader时中断,您将看到:

1:010> g
ntdll!LdrpDoDebuggerBreak+0x2b:
77e9db9b cc              int     3
1:010> g

第一个实例没有从Adobe Acrobat目录加载的DLL,但第二个实例没有。