我正在尝试将一个工具移植到osx,它被设计为在linux和freebsd上运行。程序中存在需要访问EIP和EBP的情况。这是通过ucontext完成的。
因此,我为__APPLE__添加了一个用例来放置对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但是uc->uc_mcontext.ss.eip不能编译。不确定如何从ucontext访问弹性公网EIP。
发布于 2009-04-28 12:25:31
OSX10.5中的命名方案似乎发生了变化,应该是uc->uc_mcontext->__ss.__eip。在更高版本中,这是用于x86_64的uc->uc_mcontext->__ss.__rip。
由quick google search发现,参考:1,2
https://stackoverflow.com/questions/797575
复制相似问题