Всем привет, решил тут немного поэкспериментировать с DebugApi, но вопрос возник с исключением EXCEPTION_BREAKPOINT и с полями ExceptionInformation, в MSDN написано, что эти поля содержат дополнительную информацию описывающие исключение. Также приведены описания этих полей при исключениях EXCEPTION_ACCESS_VIOLATION и EXCEPTION_IN_PAGE_ERROR но для EXCEPTION_BREAKPOINT ничего нет. Пример: EXCEPTION_DEBUG_EVENT dwProcessId=00000F84 dwThreadId=00000C5C ExceptionCode=EXCEPTION_BREAKPOINT ExceptionFlags=EXCEPTION_CONTINUABLE ExceptionRecord=00000000 ExceptionAddress=7C901230 NumberParameters=00000003 ExceptionInformation[0]=00000000 ExceptionInformation[1]=07000000 ExceptionInformation[2]=00070000 dwFirstChance=00000001 или: EXCEPTION_DEBUG_EVENT dwProcessId=00000F84 dwThreadId=00000C5C ExceptionCode=EXCEPTION_BREAKPOINT ExceptionFlags=EXCEPTION_CONTINUABLE ExceptionRecord=00000000 ExceptionAddress=01012475 NumberParameters=00000003 ExceptionInformation[0]=00000000 ExceptionInformation[1]=B0000000 ExceptionInformation[2]=FFB00000 dwFirstChance=00000001 Может кто знает что значат эти значения B0000000, FFB00000 ???
хм, не совсем, но где-то рядом. пример: MOV EAX,55555555h MOV EDX,66666666h MOV ECX,77777777h INT 3 получаем: EXCEPTION_DEBUG_EVENT dwProcessId=00000AAC dwThreadId=00000248 ExceptionCode=EXCEPTION_BREAKPOINT ExceptionFlags=EXCEPTION_CONTINUABLE ExceptionRecord=00000000 ExceptionAddress=01012491 NumberParameters=00000003 ExceptionInformation[0]=00000000 ExceptionInformation[1]=77000000 ExceptionInformation[2]=77770000 dwFirstChance=00000001
В процессе перебора получаем: NumberParameters=00000003 ExceptionInformation[0]=00000000 ExceptionInformation[1]=CL000000 ExceptionInformation[2]=CX0000 Правда не понятно как эти данные могут пригодиться
seeQ В текущем процессе это верно, там Ecx/Edx. Всегда расширенная информация содержит часть контекста, поэтому она и не используется. Ты наверно смещение её неверно задаёшь, либо дебагапи кривые.