Accès EIP et EBP via ucontext sur OS X
Question
Je suis en train de transférer un outil pour Mac OS X qui est conçu pour fonctionner sur Linux et FreeBSD. Il y a un cas dans le programme où l'accès à l'EIP et est RASE besoin. Cela se fait via le ucontext.
Alors j'ai ajouté un cas pour __APPLE__ de placer un accès approprié au 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
Mais UC-> uc_mcontext.ss.eip ne compile pas. Je ne sais pas comment accéder à l'EIP du ucontext.
La solution
Il semble que le schéma de nommage changé dans OS X 10.5, où il devrait être uc->uc_mcontext->__ss.__eip
. Sur les versions ultérieures est ce uc->uc_mcontext->__ss.__rip
pour x86_64.
Trouvé par rapide noreferrer google recherche , refs: 1 , 2
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow