Zugang EIP und EBP über ucontext auf OS X
Frage
Ich versuche, ein Werkzeug in den Hafen osx die auf Linux und FreeBSD laufen konzipiert. Es gibt einen Fall, in dem Programm, in dem Zugang zum EIP und EBP Notwendigkeit ist. Dies geschieht über die ucontext getan.
Also ich einen Fall für __APPLE__ zugegeben, um einen geeigneten Zugang zur ucontext Struktur zu setzen.
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
Aber UC-> uc_mcontext.ss.eip lässt sich nicht kompilieren. Nicht sicher, wie die EIP für den Zugriff auf vom ucontext.
Lösung
Es erscheint das Namensschema geändert in OS X 10.5, wo es uc->uc_mcontext->__ss.__eip
werden soll. Bei späteren Versionen ist dies uc->uc_mcontext->__ss.__rip
für x86_64.
Gefunden schnell google-Suche , refs: 1 , 2
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow