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.

War es hilfreich?

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
scroll top