Вопрос по OllyDbg,связанный с masm - Как определить границы модуля ?

Тема в разделе "WASM.BEGINNERS", создана пользователем wardrag5, 12 июл 2011.

  1. wardrag5

    wardrag5 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2011
    Сообщения:
    5
    Есть программа,которая просто выводит MessageBox.Точка входа - 401000.Последний адрес,что вырисовывает отладчик ollydbg - 00401FFF,но в Executable Modules в столбце Size написано 4000,но 401FFF-401000 = FFF = DEC('FFF') = 4095 байт в десятичной системе...Куда девались ещё 95 байт ?
    Бывают ли случаи,когда ollydbg не может определить физические размеры модуля ? Как визуально определить границы модуля ? Когда я открываю программу в отладчике,я сразу попадаю в модуль ntdll.dll,но,нажав пару раз F9,я вернулся в свой модуль...Почему я сразу не попадаю в *свою* программу ? Ведь я не использовал функций этой библиотеки. Хотелось бы получить ответы на эти вопросы(.
     
  2. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Это как анекдот про чемоданы :)
    Ноль - тоже адрес.

    У проекции есть два размера - физический и виртуальный, сформированный гранулярностью памяти.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    В столбце Size размер указан в hex-виде, т.е. 4000h = 16384 байт, т.е. 4 страницы по 1000h = 4К. Одна страница под PE-заголовок, и по одной странице на секции кода, данных и импорта.
    А в основном окне CPU Оля ес-но "вырисовывает" только секцию кода

    Кликаешь View->Memory и получаешь карту памяти всего процесса со всеми модулями. В колонке Owner находишь имя своей проги и в колонках Section и Contains видишь сколько и каких секций она содержит. Для более полной инфы выделяешь первую строчку с PE header и по правому клику жмешь Dump - полное описалово PE-заголовка, в котором можешь найти и Size of Image и много чего еще.

    Ты попадаешь на системную точку останова, котрая позволяет отладчику поставить брик на точку входа или любое другое место в твоей проге. Или просто жми F9 и попадешь на точку входа своей проги, или же, если тебя это напрягает, зайти в Debugging Options и на вкладке Events переключи первый останов с системного брика на Entry point