オーバーフローの悪用には次の 3 つの手順が必要であることを理解しています。
1.任意のコード (シェルコード) をターゲット プロセスのメモリ空間に挿入する。
2.eip を制御する。
3.任意のコードを実行するように eip を設定します。
ヒープの悪用に関する ben hawkens の記事を読み、関数ポインターを最終的にオーバーライドして自分のコードを指すようにする方法について、いくつかの戦術を理解しました。
つまり、ステップ 2 を理解しています。
ステップ1と3がわかりません。
コードをプロセス メモリ空間に挿入するにはどうすればよいですか?
ステップ 3 で、関数ポインタをシェルコードへのポインタでオーバーライドします。どのアドレスを計算して知ることができますか? (この問題は、stackoverflow で "jmp esp" を使用して解決されます)。