質問するログイン新規登録

回答編集履歴

1

コードにするのが漏れていた

2016/11/26 10:29

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -75,4 +75,4 @@
75
75
 
76
76
  最適化の影響を受けないように`-O0`(最適化無し)を付けています。最初のコマンドで`test_val`のアドレスが`0xbffff58c`であることを確認しましたので、`"AAAA"`が`"\x8c\xf5\xff\xbf"`(リトルエンディアンなので逆順)になるようにします。あとは、`41414141`の場所に`"%n"`を投げ込めば、test_valが変わっているのがわかると思います。
77
77
 
78
- なお、"AAAA"部分に入れるアドレスが間違っていたり、`"%n"`の順番が間違っていれば、どこかのアドレスを読みに行って書き換えようとします。ほとんどの場合はAddress boundary errorでSIGSEGVシグナルが吐かれて落ちてしまうでしょう。アドレスが間違ってないか、`"%n"`の位置が間違ってないかを確認してください。**環境によって、`test_val`のアドレス、`"%n"`が入る位置が異なりますので、ご注意ください。**
78
+ なお、`"AAAA"`部分に入れるアドレスが間違っていたり、`"%n"`の順番が間違っていれば、どこかのアドレスを読みに行って書き換えようとします。ほとんどの場合はAddress boundary errorでSIGSEGVシグナルが吐かれて落ちてしまうでしょう。アドレスが間違ってないか、`"%n"`の位置が間違ってないかを確認してください。**環境によって、`test_val`のアドレス、`"%n"`が入る位置が異なりますので、ご注意ください。**