4

Linuxおよびfreebsdで実行するように設計されたosxにツールを移植しようとしています。プログラムでは、EIP と EBP へのアクセスが必要な場合があります。これは、ucontext を介して行われます。

そこで、ucontext 構造体への適切なアクセスを配置するために __APPLE__ のケースを追加しました。

 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 にアクセスする方法がわかりません。

4

1 に答える 1

6

OS X 10.5 で名前付けスキームが変更されたようuc->uc_mcontext->__ss.__eipです。それ以降のバージョンでは、これはuc->uc_mcontext->__ss.__ripx86_64 用です。

クイックGoogle 検索で見つかりました。参考文献: 12

于 2009-04-28T12:25:30.953 に答える