EIP Accesso e EBP tramite ucontext su OS X
Domanda
Sto cercando di porto uno strumento a OS X che è stato progettato per funzionare su Linux e FreeBSD. C'è un caso nel programma in cui l'accesso al EIP e EBP è necessità. Questo viene fatto attraverso l'ucontext.
Così ho aggiunto un caso per __APPLE__ per posizionare un adeguato accesso alla struct 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
Ma Uc-> uc_mcontext.ss.eip non viene compilato. Non sei sicuro di come accedere alla EIP dalla ucontext.
Soluzione
Sembra lo schema di denominazione cambiato in OS X 10.5, dove dovrebbe essere uc->uc_mcontext->__ss.__eip
. Nelle versioni successive questo è uc->uc_mcontext->__ss.__rip
per x86_64.
Trovato da rapida noreferrer ricerca google , arbitri: 1 , 2
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow