C/C++の宿題片付けます 151代目
■ このスレッドは過去ログ倉庫に格納されています
>cmp %rbp,0x130(%r12)
>r12 0x3131313131314031
たぶん、X ファイルの中身は"111111111111111111111111111111111111111111......." で容量は1G? 2G? とメモリ空間を埋め尽くすくらいあったのですね。
はじめはとても信じられなかったんですが、ありうる話。
で、メモリ空間の最初の方の静的配列が書き様がまずいせいであふれて、とうとう、もう端っこのほうにあるスタックエリアまで到達してしまった。
libc/printf() の下の下のどこかで、0x31313131......31 という値がレジスタ r12 によみこまれてしまった。
この値、2byte, 4byte, 可能性の高いのは 8byte のアラインメントからずれてしまっている(そもそも奇数だし)。
したがって、cmp ebp, (r12 + 0x130) のオペランド r12+0x130 自体がアラインメント不整。で、バスエラー例外が発生した。
というシナリオでいいでしょうか。
であれば、>>423 で封じ込めることができているはずですね。
レジスタ bp や r12 があるということは、x86 かつAMD64 以降でしょうね。
>やるべきことは検証ではない。推理だ。www
深く同意し感謝いたします。
■ このスレッドは過去ログ倉庫に格納されています