Привет, Отцы! Как установить брек-пойнт на точку вхождения в прогу? Учитывая, что прога еще не запущена, но известен 'entry point'. Делаю так: bpm 42e2de x - бряк на выполнение, но ничего не происходит. Предположительно нужно указать контекст bpm xxxx:42e2de x. Однако контекст xxxx не известен, так как прога еще не запущена. Как быть в такой ситуации? И как узнать контекст хххх? на всякий случай?
когда открываешь файл в отладчике(в олли или айсе через симбол лоадер) ты как раз встанешь на точке входа. либо вместо первого байта на EP ставь опкод 0xCC(int3-отладочное прерывание), а в айсе укажи i3here on. потомь исправь байт на оригинальный. эта фишка есть в LordPE и PETools. Break&Enter называется > как узнать контекст хххх никак. раз прога еще не запущена, его просто нет
можно поступить следующим образом. Запусти прогу, в айсе нащупай точку входа, выставь на неё бряку, затем выгрузи прогу. Запусти снова, и бряка сработает. Дело в том, что объект процесса, вместе с рабочими наборами там и прочей хренью сразу не разрушается после отработки NTTerminateProcess, так что повторный запуск свою бряку находит ))
CARDINAL Без повторной загрузки программы? Неужели такое возможно? 8o| Никогда не получалось... Может, что-то не так делал. А с повторной загрузкой, естественно, как повезет: попала программа в тот же адресный контекст, считай повезло, нет - ... ;о) Еще можно воспользоваться "виртуальными контрольными точками". (Virtual Breakpoints в 7 главе "Using Breakpoints".) Правда для этого нужны либо исходники, либо отладочные символы. Но их (или подобие" ;о) можно получить с помощью IDA. Программа дизассемблируется в IDA (в самом первом приближении), отмечаются нужные точки, затем создается .map-файл, который затем конвертируется в .nms. (Или можно воспользоваться плагином ida2sice (Mostek) и сразу получить .nms.) Также в IDA создается .asm-файл. (Вроде бы, по руководству, можно обойтись и без этих "исходных кодов", но у меня не получалось.) Все это обрабатывается Symbol Loader'ом и загружается вместе с exe-шником. После этого точки ставятся уже не по адресам, а с помощью их символических имен (это могут быть и исходные метки из IDA), информация о которых не зависит от контекста и сохраняется между загрузками программ. Муторно, "исходники" ;о) часто получаются огромными :о(, но ... работает!
Sergey_R тааак, если чего не понимаешь, читай win2000 inside, там об этом подробнейшим образом написано. У мен всегда срабатывало.