سؤال

أحاول تشغيل أداة إلى 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 لا يترجم. لست متأكدا من كيفية الوصول إلى EIP من UContext.

هل كانت مفيدة؟

المحلول

يبدو أن مخطط التسمية تغير في OS X 10.5، حيث يجب أن يكون uc->uc_mcontext->__ss.__eip. وبعد في الإصدارات الأحدث هذا هو uc->uc_mcontext->__ss.__rip ل x86_64.

وجدت بواسطة سريعة بحث جوجل, ، يرسل:1, 2

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top