Как узнать, к какой DLL принадлежит системный вызов? - PullRequest
2 голосов
/ 06 апреля 2010

У меня длинный список всех вызовов, которые выполняет программа. Что мне нужно знать, это к какой DLL принадлежит каждый вызов. Как бы я это выяснил?

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

гул ... ваш заголовок и ваши вопросы указывают на разные вещи. Системные вызовы означают что-то очень специфическое, вызов ядра ОС (а это , а не в dll).

Как это случается, Windows не предоставляет их напрямую, а предоставляет API в системных DLL, которые сами отвечают за вызов syscall.

Итак, допустим, у вас нет списка системных вызовов, а есть список вызовов. Этот список генерируется из двоичного файла? На самом деле у двоичных файлов есть список библиотек, от которых они зависят, а dumpbin /imports binary.exe на самом деле выведет именно то, что вы запрашиваете.

1 голос
/ 06 апреля 2010

Учитывая исполняемый файл, самый простой способ, вероятно, будет dumpbin /imports <exe_name>. Это даст результат, подобный этому:

KERNEL32.dll
           405020 Import Address Table
           4060FC Import Name Table
                0 time date stamp
                0 Index of first forwarder reference

             126 GetModuleHandleA
             150 GetStartupInfoA

USER32.dll
           405480 Import Address Table
           40655C Import Name Table
                0 time date stamp
                0 Index of first forwarder reference

              F0 GetClientRect
             17A InvalidateRect
              B7 EnableWindow
             291 UpdateWindow

GDI32.dll
           405000 Import Address Table
           4060DC Import Name Table
                0 time date stamp
                0 Index of first forwarder reference

              37 CreateFontIndirectA
             1AF Rectangle
              4D CreateSolidBrush
              44 CreatePen
             1C7 SelectObject
              53 DeleteObject
             14F GetObjectA

В зависимости от вашего исполняемого файла, вполне вероятно, что вы получите больше посторонней информации. Поскольку у вас уже есть список функций, которые вас интересуют, его довольно легко отфильтровать, чтобы получить необходимую информацию и оставить остальные.

...