EIP acceso y EBP través ucontext en OS X
Pregunta
Estoy tratando de puerto de una herramienta para OSX que está diseñado para ejecutarse en Linux y FreeBSD. Hay un caso en el programa donde el acceso a la EIP y EBP es necesario. Esto se hace a través de la ucontext.
Así que he añadido un caso para __APPLE__ para colocar un acceso adecuado a la estructura ucontext.
9887 #if defined(__FreeBSD__)
9888 *paddr = uc->uc_mcontext.mc_eip;
9889 #elif defined(__dietlibc__)
9890 *paddr = uc->uc_mcontext.eip;
9891 #elif defined(__APPLE__)
9892 *paddr = uc->uc_mcontext.ss.eip;
9893 #else
9894 *paddr = uc->uc_mcontext.gregs[REG_EIP];
9895 #endif
Pero UC> uc_mcontext.ss.eip no compila. No estoy seguro de cómo acceder a la EIP de la ucontext.
Solución
Parece que el esquema de nombres cambiado en OS X 10.5, donde debe ser uc->uc_mcontext->__ss.__eip
. En versiones posteriores se trata uc->uc_mcontext->__ss.__rip
para x86_64.
Encontrados por rápida noreferrer google búsqueda , árbitros: 1 , 2
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow