В программе работает а в OllyDbg не могу посмотреть обработчик исключения пробовал отключить опции options->Debugging options->Exceptions->Ignore also folowing custom .... и все сразу на вкладке Exceptions. Программа при выполнении под отладчиком пропускает обработчик ;кусок из программы ----------------------------------------------------------- invoke GetCurrentProcess; mov ebx,eax ....... invoke VirtualAllocEx,ebx, 0,4095, MEM_COMMIT or MEM_RESERVE,PAGE_EXECUTE_READWRITE mov AdrsMemory, eax invoke GetModuleHandle,addr kernel32 invoke GetProcAddress,eax,addr AddVectoredExceptionHandler push offset MyVectoredHandler push 1 call eax ;--------------------------------------------------------------------- invoke GetCurrentProcess; invoke VirtualProtectEx,eax,AdrsMemory,40,PAGE_EXECUTE_READWRITE or PAGE_GUARD,offset OldProtect mov ebx ,AdrsMemory mov Dword ptr[ebx] ,00555555h//провокация !!!! .......... invoke LoadIcon,NULL,IDI_APPLICATION ............ ;---------------обработчик MyVectoredHandler ------его нет---------------- MyVectoredHandler proc ER:EXCEPTION_POINTERS ......... invoke wsprintf, ADDR sResult,ADDR fmt,eax ; Test Code push 0 push offset sResult push offset AddVector push 0 call MessageBox MyVectoredHandler endp ......... как заставить отладчик войти в обработчик исключения?
Придется уточнить вопрос в SoftIce при установке точки останова где нибуть в обработчике исключения отладчик позволяет отлаживать эту функцию , а OllyDbg отладчик останавливается на инструкции вызвавшей исключение, и при попытке трассировки просто пропускает блок обработчика и выполняет инструкцию следуюшую за вызвавшей исключение. И мне непонятно можно ли его заставить войти внутрь обработчика или нет я не так давно учу ассемблер и мне важно ваше мнение
Всем спасибо разобрался. Действительно при установке векторного обработчика исключений OllyDbg иногда не входит в обработчик а перепрыгивает на следуюшую инструкцию разобравшись внимательно можно отметить что это происходит при исключении 80000001 то есть если страница памяти охраняемая имеет атрибут PAGE_GUARD как побороть?Я просто трасирую в SoftIce или Можно подкоректировать код в памяти.Поставить Int3 в теле обработчик .Отладчик показывает адрес вызвавший исключение внизу окна слева а дальше понятно Для остальных исключений достаточно настроить OllyDbg через меню Опции-> опции отладчика-> исключения ;включив соответсвуюшую флаг игнорировать там же можно поставить и диапазон исключений которые отладчик пропустит если они мешают работать проверено ollyDbg 10 SoftIce DS 3.2 Спасибо за помошь с уважением d51
дык, там дело в том что это трабла ринг3 отладчиков, они не видят эти обработчики))) если протрассировать не много, то будет ясно почему
Даже не трассируя можно с 99% гарантией предположить: Так как в RtlDispatchException первым делом отработает VectoredExceptionHandler и соответственно вернет EXCEPTION_CONTINUE_EXECUTION, то до SEH дело не дойдет, а одладочные события наверно там и генерятся.