eXeL@B —› Основной форум —› Переключение контекста / процесса в SoftICE |
Посл.ответ | Сообщение |
|
Создано: 05 января 2006 18:42 · Поправил: Модератор · Личное сообщение · #1 Приветствую еще раз, пишу пост потому что уже забодался просто с переключением контекста, по 10-15 минут приходистя тратить чтобы только остановиться ("брейкнуться") на нужном адресе, компьютер приходится жестоко вырубать резетом (reset). Вообщем, брейкпоинт поставить bpx-ом не сложно, но он НЕ ОСТАНАВЛИВАЕТСЯ. Заметте, я не ставлю BPX на вызов какой-либо там функции, так что тут должно быть все проще, я ставлю брейк на адрес, например, в дизассемблированном коде есть такой адрес: 001B:0046B7C0 вот я и ставлю BPX 001B:0046B7C0 брейкпоинт добавляется в список брейков. Далее я запускаю свое приложение и он, ясный перец, не останавливается. Пробовал так: 1) запускаю программу и сразу жму CTRL+D, потом пишу ADDR имя_приложения (или UID), и жму F5 - НЕ РАБОТАЕТ. 2) запускаю программу, жму CTRL+D и начинаю такать F12 до тех пор пока я не увижу контекст мой программы - это единственный способ который пока работает, но в большинстве случаев, он почему-то не доходит до контекста, а окно софтайса просто исчезает и программа запускается полностью, причем, ОЧЕНЬ ЧАСТО перестает работать мышка + иногда комп неадыкватно работает и приходится нажимать RESET. ну не ужели в софтайсе нет простой комбинации клавиш которая ТОЛЬКО ПЕРЕКЛЮЧАЕТ КОНТЕКСТ ? F12 - это тупой способ перескакивания с процесса на процесс, т.к. она вроде выполняет код до первого RET. Ну или если нет, то как поставить брейкпоинт, чтобы окно софтайса САМО ВСПЛЫВАЛО когда будет выполнятся комманда по адресу указанному в BL списке. Пожалуйста, помогите, не писал бы если бы уже несколько недель не парился с этим. Компутер жалко все время на RESET нажимать |
|
Создано: 05 января 2006 19:13 · Личное сообщение · #2 |
|
Создано: 05 января 2006 19:17 · Личное сообщение · #3 |
|
Создано: 05 января 2006 20:09 · Личное сообщение · #4 |
|
Создано: 05 января 2006 21:24 · Личное сообщение · #5 |
|
Создано: 05 января 2006 21:41 · Личное сообщение · #6 хмм, насколько я знаю BPM ставит бряк на попытку доступа к памяти ... да че-то я запутался dragon, а двойной щелчок где? если в сайсе на нужном адресе на нужном приложении, так в то- то и дело что не могу до туда добраться. А на самом деле, вот что я узнал, но не могу понять почему это так, если кто знает прошу объяснить. Итак: Брейкпоинт срабатывает только тогда, когда: 1) Запускаю свое приложение 2) пишу СНАЧАЛА аddr имя_приложения, а только потом: 3) пишу "BPX адрес" 4) выхожу из айса. Если я поменяю местами 2) и 3) то ничего не сработает, как только делаю в выше указанном порядке, то все работает просто идеально. Но ни в одной статье со сайсу я не видел, чтобы это упомянули ... так это так? У всех так? Вообще какая разница в каком порядке это делать Спасибо за ответы и предложения |
|
Создано: 05 января 2006 21:47 · Личное сообщение · #7 Xatrix пишет: Если я поменяю местами 2) и 3) то ничего не сработает Естесственно, бряк можно ставить только внутри процесса(как bpx, так и bpm). А бряки на API работают потому что секции кода системных DLL общие для всех процессов. Xatrix пишет: хмм, насколько я знаю BPM ставит бряк на попытку доступа к памяти Для каждого bpm-а можно указываеть его тип - R, W, RW и X. Вот X - это остановка для выполнения |
|
Создано: 06 января 2006 01:15 · Личное сообщение · #8 |
|
Создано: 06 января 2006 12:10 · Личное сообщение · #9 Спасибо, Bat и Dragon Dragon, насчет все того же 2) и 3) - это было бы логично и имело больший смысл, если бы не следующий факт: - после того как моя программа (которая была остановлена софтайсом), была после дебагинга успешно завершена, брейкпоинт все равно остается рабочим, т.е. понимаешь к чему я? Если bpx ставится внутри процесса, то по его окончании и брейк должен стать недействительным, т.к. процесс вообще пропадает из списка addr, и выходит надо БЫЛО БЫ снова запустить приложение и установить НОВЫЙ бряк - но это как раз и не обязательно, бряк и так срабатывает, и мне даже не надо вручную еще раз делать активным мой процесс коммандой addr. Так в чем же дело? Должно быть другое объяснение. |
|
Создано: 06 января 2006 15:01 · Личное сообщение · #10 Xatrix пишет: Должно быть другое объяснение. ...если должно быть,значит берёшь и читаешь тогда документацию по SoftIce. Цитата из Айрапетяна: "Для win32-приложений брейкпоинты,установленные в старших 2ГБ адресного пространства,являются глобальными; они срабатывают в любом контексте.Все брейкпоинты из младших 2ГБ являются контекстно зависимыми.Они срабатывают и вызывают активизацию SoftIce только при выполнении определённых условий: * если текущий адресный контекст соответствует контексту,в котором был установлен брейкпоинт ... " ----- the Power of Reversing team |
|
Создано: 06 января 2006 15:07 · Личное сообщение · #11 |
|
Создано: 06 января 2006 15:57 · Личное сообщение · #12 |
eXeL@B —› Основной форум —› Переключение контекста / процесса в SoftICE |