Почему Entry Point Address исполняемого файла в dumpbin отличается от WinDbg? - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь понять механизм загрузки исполняемого файла, поэтому я сделал два разных теста с notepad.exe

1) Выполнение команды dumpbin:

dumpbin /ALL "C:\Windows\System32\notepad.exe" /OUT:"C:\sample\log4.txt" 

Я получилследующие значения в OPTIONALHEADER VALUES:

1AC50 entry point (000000014001AC50) WinMainCRTStartup
1000 base of code
140000000 image base (0000000140000000 to 0000000140042FFF)

2) Запуск WinDbg:

x notepad!*CRT* 

Я получил это:

00b9bf9a          notepad!__mainCRTStartup (void)
00b9bf90          notepad!WinMainCRTStartup (<no parameter info>)
00ba04a4          notepad!msvcrt_NULL_THUNK_DATA = <no type information>
00ba050c          notepad!_IMPORT_DESCRIPTOR_msvcrt = <no type information>

Я не понимаю, почему 14001AC50и 00b9bf90 - это разные значения.Разве они не должны иметь одинаковое значение AddressOfEntryPoint?

Заранее спасибо

1 Ответ

0 голосов
/ 26 февраля 2019

Существует несколько причин несоответствия.

Во-первых, вы запускаете dumpbin в x64-версии notepad.exe, хранящейся в System32, но, похоже, вы отлаживаете x86 notepad.exe хранится в SysWoW64.Убедитесь, что вы запустили версию WinDbg для x64 или AMD64 и что вы подключаетесь к C:\Windows\System32\notepad.exe.

После того, как все будет улажено, должно стать больше смысла, но есть еще одна вещь, о которой следует помнить.Команда x в WinDbg отображает адрес виртуальной памяти символа в процессе выполнения, а dumpbin отображает его как смещение от базового адреса модуля.

Некоторое быстрое вычитаниеиз базы модуля и все должно совпадать.

Вот как это выглядит в моей системе:

C:\>dumpbin /ALL "C:\Windows\System32\notepad.exe" | find "entry point"
           1AC50 entry point (000000014001AC50) WinMainCRTStartup

0:000> x notepad!WinMainCRTStartup
00007ff6`4fe1ac50 notepad!WinMainCRTStartup (<no parameter info>)
0:000> ? notepad!WinMainCRTStartup - notepad
Evaluate expression: 109648 = 00000000`0001ac50

Matching entry point addresses

...