Как установить бряк на начало проги?

Тема в разделе "WASM.RESEARCH", создана пользователем NeutronMass, 28 авг 2005.

  1. NeutronMass

    NeutronMass New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2005
    Сообщения:
    87
    Привет, Отцы!

    Как установить брек-пойнт на точку вхождения в прогу? Учитывая, что прога еще не запущена, но

    известен 'entry point'. Делаю так:

    bpm 42e2de x - бряк на выполнение, но ничего не происходит. Предположительно нужно указать

    контекст bpm xxxx:42e2de x. Однако контекст xxxx не известен, так как прога еще не запущена.

    Как быть в такой ситуации?

    И как узнать контекст хххх? на всякий случай?
     
  2. AV2004

    AV2004 New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2004
    Сообщения:
    11
    когда открываешь файл в отладчике(в олли или айсе через симбол лоадер) ты как раз встанешь на точке входа.

    либо вместо первого байта на EP ставь опкод 0xCC(int3-отладочное прерывание), а в айсе укажи i3here on. потомь исправь байт на оригинальный. эта фишка есть в LordPE и PETools. Break&Enter называется



    > как узнать контекст хххх

    никак. раз прога еще не запущена, его просто нет
     
  3. NeutronMass

    NeutronMass New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2005
    Сообщения:
    87
    Понял, Спасибо.



    Само собой после загрузки. Не командой ли map32?
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    addr имя_процесса
     
  5. NeutronMass

    NeutronMass New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2005
    Сообщения:
    87
    Thanks a lot, people!
     
  6. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    можно поступить следующим образом. Запусти прогу, в айсе нащупай точку входа, выставь на неё бряку, затем выгрузи прогу. Запусти снова, и бряка сработает. Дело в том, что объект процесса, вместе с рабочими наборами там и прочей хренью сразу не разрушается после отработки NTTerminateProcess, так что повторный запуск свою бряку находит ))
     
  7. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    CARDINAL



    Без повторной загрузки программы? Неужели такое возможно? 8o| Никогда не получалось... Может, что-то не так делал.

    А с повторной загрузкой, естественно, как повезет: попала программа в тот же адресный контекст, считай повезло, нет - ... ;о)



    Еще можно воспользоваться "виртуальными контрольными точками". (Virtual Breakpoints в 7 главе "Using Breakpoints".) Правда для этого нужны либо исходники, либо отладочные символы. Но их (или подобие" ;о) можно получить с помощью IDA. Программа дизассемблируется в IDA (в самом первом приближении), отмечаются нужные точки, затем создается .map-файл, который затем конвертируется в .nms. (Или можно воспользоваться плагином ida2sice (Mostek) и сразу получить .nms.) Также в IDA создается .asm-файл. (Вроде бы, по руководству, можно обойтись и без этих "исходных кодов", но у меня не получалось.) Все это обрабатывается Symbol Loader'ом и загружается вместе с exe-шником. После этого точки ставятся уже не по адресам, а с помощью их символических имен (это могут быть и исходные метки из IDA), информация о которых не зависит от контекста и сохраняется между загрузками программ.

    Муторно, "исходники" ;о) часто получаются огромными :о(, но ... работает!
     
  8. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    Sergey_R

    тааак, если чего не понимаешь, читай win2000 inside, там об этом подробнейшим образом написано. У мен всегда срабатывало.