を使用してのptraceで私は私が私が意味する、RIPの値をテストしています、私は、Linuxの64-ビットの下で少しデバッガに取り組んでいると私は、システムコールの戻り値を探してトラブルを抱えているSINGLESTEP
を戻り値を取得します。問題は、私はどのようにあるなどシステムコール名の引数を取得し、その後
を
if (rip & 0x0000ffff == 0x050f)
:PEEK_USERDATAとptraceのは、お返しに私にノーRIPアドレス、直接このように(0x050fがSYSCALLのオペコードです)オペコードを与えますこれらのシステムコールの戻り値を取得し、私はptraceがPTRACEを提供することを知っています私はSINGLESTEPを使用しているので、自分のリップがSYSLEAVEとSYSEXITのオペコードと一致するかどうかをチェックしましたが、決してそれは決してありませんでした。戻り値を確認できる唯一の方法は、実際には私のorig_raxをチェックすることですが、この方法でexit_group retvalを取得することはありません。
私は、Linux ABIが戻り値をRAXに格納したいと思っていますが、私はuserlandへの復帰を目撃する方法はありません。
ありがとう。
リッピングは命令ポインタです - 命令のオペコードビットではなく、実行する次の命令のアドレスが含まれています... –
RIPの位置にPEEKを行います。 – r3dalice