Título: Evitar que te borren los Debug registers en un debugger ring3 Publicado por: biribau en 18 Junio 2009, 04:14 am He googleado bastante y nada,
Alguien sabe como hace el olly esto? estoy intentando integrarlo en pydbg y no doy con ello. Poniendo el bit GD a 1 del Dr7 supuestamente tendria que saltar una excepcion si se hace un mov Dr7, eax pero creo que stoy confundido y solo sirve para modo privilegiado. Creo que es el SO el que se encarga de poner los debug registers despues de una excepcion pero como puedo evitar que el so haga eso desde ring3? Espero haber sido claro, cualquier ayuda es bienvenida :) Título: Re: Evitar que te borren los Debug registers en un debugger ring3 Publicado por: ny0x en 18 Junio 2009, 04:25 am no estoy muy informado sobre el tema pero me parece que eso se hace desde el ring0 :-\
encontre esto puede te sirva puede que no http://blog.48bits.com/?p=60 http://support.microsoft.com/kb/121093/es Título: Re: Evitar que te borren los Debug registers en un debugger ring3 Publicado por: Eternal Idol en 18 Junio 2009, 08:36 am "The debug registers are privileged resources; the MOV instructions that access them can only be executed at privilege level zero. An attempt to read or write the debug registers when executing at any other privilege level causes a general protection fault."
http://en.wikipedia.org/wiki/X86_debug_register#DR7_-_Debug_control PERO existen APIs de depuracion y con SetThreadContext (http://msdn.microsoft.com/en-us/library/ms680632(VS.85).aspx) lo podes hacer, el hilo tiene que estar suspendido. Título: Re: Evitar que te borren los Debug registers en un debugger ring3 Publicado por: biribau en 18 Junio 2009, 16:41 pm Solucionado, razon aqui: http://foro.elhacker.net/ingenieria_inversa/pydbg_el_no_va_mas_que_opinais_ayuda_con_funcion_de_carga-t258419.0.html;msg1255082#msg1255082 (http://foro.elhacker.net/ingenieria_inversa/pydbg_el_no_va_mas_que_opinais_ayuda_con_funcion_de_carga-t258419.0.html;msg1255082#msg1255082)
gracias por las molestias, al final sí se puede hacer en ring3 y sin SetThreadContext! jeje ahi viene explicado El problema de hacerlo con SetThreadContext es que *creo*(porque lo probe y no ruló) que el so coge el context_record DESPUES del retorno de la excepcion, claro, es logico, a ver si me explico, quedaria asi: Código: <salto excepcion> solucion que me sirvióí: Código: <salto excepcion> Gracias |