문제

Linux 및 FreeBSD에서 실행되도록 설계된 OSX에 도구를 포트하려고합니다. 프로그램에는 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에 액세스하는 방법을 잘 모르겠습니다.

도움이 되었습니까?

해결책

이름 지정 체계가 OS X 10.5에서 변경된 것으로 보입니다. uc->uc_mcontext->__ss.__eip. 이후 버전에서는 이것이입니다 uc->uc_mcontext->__ss.__rip x86_64의 경우.

Quick에 의해 발견되었습니다 구글 검색, 참조 :1, 2

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top