次を含むバッファがあり'bac\n'
、文字を交換しようとして'b'
います'a'
デバッガーをチェックしたところ、ebp が指すアドレスに 4 バイトが出力されました。'bac\n'
- ebp - バッファのアドレス
- eax - オフセット (現在は 0)で、バッファ内のを
ebp + eax
指す'b'
- ebx - 含む
'b'
- edi - 含む
'a'
'b'
問題は、バッファ内の を次のように上書きする命令を実行するときです'a'
。
mov [ebp + eax], edi
...次に、バッファを印刷すると、次が含まれるようになりました'ac\n'
。どこに行った'b'
?'a'
バッファ内のを で上書きするはずの次の命令を実行すると'b'
、スワップが完了します。
mov [ebp + eax + 1], ebx
...その後、バッファには以下が含まれるようになりました'abac'
:'abc\n'
ここで何が起こっているのか誰でも説明できますか?