私はすべての呼び出しとretをキャッチしていることを除いて、straceのような小さなプログラムを作っています。 私は間接呼び出しのためにすべての呼び出しとretを取得する方法を見つけることができないので、私はret opcodeの起源となる関数を取得する方法を探したいと思います。あなたはそれを行う方法について何かを持っていますかプログラムをトレースしているときにretオペコードの起点を知る方法
0
A
答えて
1
ret
は何をシミュレートできますか:アドレス%esp
のスタックを調べ、その値にEIP
を設定します。現在のスタックのアドレスの前の命令はここではcall
になります。
+0
okですが、前の命令のサイズが固定されていないので、この命令の最初に戻るのは難しいですか? –
+1
はい、それはすべての可変サイズのオペコード・アーキテクチャーの一般的な制限です。逆方向に進むことはできません。しかし、あなたは呼び出し関数を知っています。なぜあなたは最初に '呼び出し'を取得したいのか分かりませんが、それを行う方法はあなたが知っている有効な点から関数全体を逆アセンブルし、 'ret'によって読み込まれたアドレスで停止します。 – phihag
関連する問題
- 1. プログラムをトレースする方法
- 2. EXC_BAD_ACCESSエラーが起点をトレースする
- 3. PHP - 関数トレースを取得する方法を知りたい
- 4. すべてのクラスタワーカーがいつ起きているかを知る方法?
- 5. pg_restoreが完了したときにプログラムで知る方法
- 6. Ruby - リターンの実行トレース/起点を特定する
- 7. プログラムを起動してシェルを起動する方法
- 8. Java - スレッドが待機しているときを知る方法?
- 9. バックグラウンドを実行しているシェルスクリプトをトレースする方法は?
- 10. PHPプログラムの「解析エラー:構文エラー」をトレースする方法は?
- 11. このC再帰プログラムをトレースする方法
- 12. OCamlでデバッグ用のプログラムをトレースする方法は?
- 13. jQueryのバージョンを知る方法をプログラム
- 14. CMakeLists.txtをトレースする方法
- 15. JSPをトレースする方法
- 16. コールドキャッシュを使用してプログラムを起動する方法
- 17. ユーザーが新しいSMS通知をクリックしたときに自分自身のアクティビティを起動する方法
- 18. マクロとトレース方法
- 19. プログラムが何をしているかを知る方法はありますか?
- 20. Bashスクリプト - プログラムが終了したことを知る方法
- 21. XMLHttpRequestを同じ起点にするときにクッキーを送信しない方法はありますか?
- 22. leaveとretの違い
- 23. process.startでプログラムを起動する方法。プログラムがファイルを見つけることができない。
- 24. 通知がクリックされたときにアクティビティを起動する方法は?
- 25. .netから別のユーザーとして外部プログラム(プロセス)を起動する方法
- 26. 別のプログラムが実行されているときにプログラムが起動しないようにする(Windows)
- 27. ファイルを開いたときにPythonプログラムを起動する
- 28. 通知をクリックしているときにアプリケーションを開く方法は?
- 29. ユーザーが画面の回転をロックしたときにデバイスの向きをプログラムで知る方法
- 30. PHPオペコードを記述して実行しました。実行する方法?
これはどの命令セットですか? –