回答編集履歴
1
コードにするのが漏れていた
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"`が入る位置が異なりますので、ご注意ください。**
|