次を含むバッファがあり'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'
ここで何が起こっているのか誰でも説明できますか?