2

open システム コールが呼び出されるたびに、実際にレジスタ (eax、ebx、ecx) の内容を取得する次のコードを使用していました。多くの苦労の後、この質問から値が何を意味するかを理解しました。
ebx には、ファイル名へのポインタが含まれています。しかし、アクセスしようとすると、セグメンテーション違反が発生しました。どこが間違っていますか?コードはこちらからアクセスできます

4

1 に答える 1

2

すべてのプロセスには独自のアドレス空間があります。別のプロセスから取得したアドレスは、あなたのアドレスでは無効になります。他のプロセスでメモリを読み取る1つの方法は、を使用することPTRACE_PEEKDATAです。Linuxの場合、別の方法は、アドレスを開い/proc/<pid>/memてシークし、ファイルのようにアドレスから読み取ることです。

于 2012-03-20T12:26:13.423 に答える