как работает exe и как делается вызов для адресации файла dll и exe - PullRequest
0 голосов
/ 22 ноября 2010
  • Как работает исполняемый файл для Windows?
  • Как найти начальный адрес в исполняемом файле?
  • Для любого файла, где хранятся адреса и как мы можем прочитать эти адреса?
  • Как работает call и ret для любого dll или exe файла?

Дайте мне советы по использованию дизассемблера ida pro.

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Виртуальный начальный адрес программы записывается в заголовке исполняемого файла. Любая программа просмотра заголовков, которая понимает их структуру, может легко показать их, например HT (http://hte.sf.net/) - просто назвать ее. IDAPro может иметь что-то похожее.

0 голосов
/ 06 октября 2015

Как работает call и ret для любого файла dll или exe

На самом деле это зависит от того, является ли это DLL или EXE-файлом.

Когда загрузчик модулей Windows завершает загрузку DLL, он вызывает начальный адрес (известный как «DllMain») библиотеки DLL с параметром DLL_PROCESS_ATTACH (см. документацию по DllMain ). Если DllMain возвращает 1, загрузчик продолжает работу.

Однако, когда вы запускаете EXE, система порождает новый процесс и отображает ntdll.dll в адресное пространство этого процесса, а затем порождает основной поток, работающий с начального адреса NTDLL. Затем этот поток выполняет дополнительную инициализацию, загружает файл EXE (плюс все библиотеки DLL, указанные в его таблице импорта) и вызывает функцию, идентифицированную по начальному адресу EXE-файла. Когда эта функция возвращается, NTDLL затем вызывает NtTerminateProcess, который убивает все запущенные потоки и закрывает процесс.

Этот процесс запуска EXE может быть трудно наблюдать с помощью отладчика в пользовательском режиме; некоторые отладчики пытаются сломаться на этих ранних стадиях инициализации процесса.

...