|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 5, 2004 23:27:12 Ситуация такая, есть код типа: exec_addr: jmp jmp_addr А память по addr не существует или недоступна для выполнения. Как достать этот exec_addr, а то jmp_addr достать легко, а тот никак. Это хотя бы возможно вообще? |
|
|
Дата: Мар 8, 2004 20:44:17 Я что-то вопроса краями не догнал :( |
|
|
Дата: Мар 8, 2004 22:55:11 В смысле из обработчика SEH достать адрес exec_addr. jmp_addr лежит в контексте(EIP) и в поле ExceptionAddress. Хотя я понял уже, невозможно достать. |
|
|
Дата: Мар 8, 2004 23:06:13 Так exec_addr и есть EIP, т.е. адрес инструкции, которая вызвала исключение. |
|
|
Дата: Мар 9, 2004 10:20:00 Я смотрел, там jmp_addr. Сначала управление передаётся, а потом памяти нет и возникает исключение. |
|
|
Дата: Мар 9, 2004 18:40:41 Слушай, а по человечески сформулировать можно? Я читал, наверное, раза три. Так ничего и не понял :( |
|
|
Дата: Мар 9, 2004 18:57:35 Чего ж тут не понять ;-) |
|
|
Дата: Мар 9, 2004 19:14:35 А вот тупой я! Из структур SEH можно достать многое -> слепок потока на момент сбоя. А уж будет там EIP сбойной инструкции, или EIP инструкции ПОСЛЕ нее, зависит от типа исключения - трап это, или фолт. Другое дело, что я вообще смысла вопроса понять не могу :( |
|
|
Дата: Мар 9, 2004 19:22:35 dragon пытался об'яснить что сначала происходит прыжок и только потом возникает исключение, в связи с этим как узнать именно адрес этого прыжка?? Я в АСПре такое часто наблюдаю, Olly вываливается на какой-нить адрес и говорит что-то типа "кода нет" ;-) |
|
|
Дата: Мар 9, 2004 20:29:07 Ага. Понял. Наконец-то :) Ответ: никак. |
|
|
Дата: Мар 10, 2004 15:38:07 Да, жалко, что никак. Можно было бы конечно поискать по память инструкцию jmp, или jmp eax, если адрес в регистре, но это вряд ли сработает, т.к. можно переход сделать ешё по ret(push addr/ret), или jmp [eax+ebx*4+12345h], так что облом. |
|
|
Дата: Мар 10, 2004 16:41:53 Только трейсить и вести лог автоматически, но вот только зачем это надо? |
|
|
Дата: Мар 10, 2004 18:53:35 Да всё это XProtector раскопать пытаюсь, там спёртые байты, их найти надо как-то. Вот и хотел таким способом. |
|
|
Дата: Мар 10, 2004 22:35:11 Asterix совершенно правильно заметил - его надо трейсить. Только движок трейсера надо писать самому - это должен быть специальный движок, во многом отличный от движков отладчиков (того же OllyDbg, например). Если хочешь - дам тебе наброски своей третьей части упаковщиков - там я описываю некоторые принципы. Быть может, тебе это окажется полезным... |
|
|
Дата: Мар 11, 2004 00:17:06 Трейсер в любом случае работает через int1, а там оно перехвачено вроде, Ollydbg с синим экраном вылетает. И замеры времени выполнения кода точно есть. Сначала надо найти все эти места. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.124 |