質問: スタック領域に積んだ値は、関数がネストしてもFrame Pointerから遡って参照することができると理解しているのですが、 その場合、より深い場所にある値の上書きはできないのでしょうか? また、できないとすればそれはなぜなのでしょう。 セキュリティでしょうか? ただし、代入する値のサイズがもとの値以下であり、Growableでないことを前提とします。 無駄に手書きですが、こういうイメージです ``` ーーーーーーー | | | 関数 | | | | ローカル変数 <-| ----------- | | | | | 上書きしたい | ネストした --- | 関数 | | | ーーーーーーー ```
回答: 回答になるかわかりませんが、 1.当該ローカル変数がPUSHされたものである 2.かつ他の関連する全ての変数のレイアウトとコードが自明。 なら、当該ローカル変数のアドレスが特定できます(EBPとESPで特定可能)。 アドレスが特定できれば書き換え可能と言えます。