ELF および DWARF 情報を使用してプログラムのすべてのデータを取得し、現在実行中のプロセスにピン ツールをフックする作業を行っています。これは、ピン ツールを使用する一種のデバッガです。
スタックからローカル変数を取得するために、ピンからアクセスできるレジスタ EIP、EBP、および ESP を使用しています。
奇妙に感じたのは、ピン ツールがプロセスに接続されたときに実行されていた現在の関数を EIP が指していると予想していたのに、代わりに EIP がセクション .PLT を指していることです。つまり、Foo() の実行中に pin ツールがプロセスにフックされていた場合、EIP が Foo 関数内のアドレスを指していると予想していました。ただし、.PLT セクションの先頭を指しています。
私が知る必要があるのは、プロセスが現在どの関数にあるかです.PLTセクションを使用して関数のアドレスを取得する方法はありますか? スタックから、または Pin を使用して関数のアドレスを取得する他の方法はありますか? 質問があれば教えてください。