Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Точка входа в программу

30K
02 апреля 2009 года
Zaal
10 / / 04.10.2007
Любой исполняемый файл - это последовательность команд от 1 до последнего байта. А теперь вопрос:
Если программа начинает выполнение не с первого байта, то как процессор определяет точку входа и смещение. Может метка где записана? Например дизассемблер выдаёт точку входа по адресу 0040116С, а этот же код в файле лежит по адресу 0000116C. Какая информация обычно хранится в интервале (1-EP). Почему смещение 00400000 и программа не начинается с 1?

За ссылочку на литературу буду благодарен
1.6K
02 апреля 2009 года
Vov4ick
476 / / 01.02.2007
Любой исполняемый файл - это последовательность команд
Далеко не любой. Только файла com - формата состоят исключительно из куска кода. Ехешники венды например включают в себя (упрощённо) заголовок, таблицу секций, собственно секции кода и данных, таблицу импорта и ресурсы.
По описанию PE - например эта статья http://www.wasm.ru/article.php?article=1002001
Также рекомендую goooogle по фразе -> <название желаемого формата> формат
551
02 апреля 2009 года
Pavia
357 / / 22.04.2004
MSDN читай. Описание формата исполняемых файлов.

00400000 это стандарт. Перед ней расположен стек. Хотя почти все можно поменять, но там тогда будут свои заморочки.
45K
05 апреля 2009 года
qpokyc
21 / / 27.03.2009
Цитата: Pavia
MSDN читай. Описание формата исполняемых файлов.

00400000 это стандарт. Перед ней расположен стек. Хотя почти все можно поменять, но там тогда будут свои заморочки.



Это ImageBase, наверно. Там вообще может не быть исполняемого кода, а точка входа (EntryPoint) распологается где угодно (в пешках, тобишь в PE, по крайней мере). Кстати у компилятора что есть в Borland Delphi точка входа всегда почти в конце кодовой секции, которая у них называется .code (у компилеров Microsoft она называется .text, и ImageBase у них разный, кстати), за которой следует код инициализации, вызовы пользовательских алгоритмов через CALL (которые располагаются в середине) и код завершения (если файлик протом каким нить не подточили или вирус его не схавал).

45K
05 апреля 2009 года
qpokyc
21 / / 27.03.2009
Цитата: Vov4ick
Любой исполняемый файл - это последовательность команд
Далеко не любой. Только файла com - формата состоят исключительно из куска кода. Ехешники венды например включают в себя (упрощённо) заголовок, таблицу секций, собственно секции кода и данных, таблицу импорта и ресурсы.
По описанию PE - например эта статья http://www.wasm.ru/article.php?article=1002001
Также рекомендую goooogle по фразе -> <название желаемого формата> формат



Вот спасиба! А я дурак ломал голову о том как получь чистый кусок кода в файле :D

349
06 апреля 2009 года
Phantom-84
656 / / 27.10.2005
fasm:
 
Код:
; org <baseaddr> if needs
; use32 if needs
  jmp $
  db "чистый кусок кода в файле. Зы)", 0
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог