As seguintes instruções:
0xffffd096 push eax
0xffffd097 push 0x41414141
Oxffffd09c push 0x42424242
afeta a pilha da seguinte forma:
0xffffd024|+0x0000 "BBBBAAAA" <- esp
0xffffd028|+0x0004 "AAAA"
0xffffd02c|+0x0008 Ox00000000
Por que o ponteiro da pilha faz referência automaticamente aos dois opcodes consecutivos push imm \x68
como mesclados, distintos do push eax \x50
opcode anterior?
Acho que você está interpretando mal a saída.
Você tem oito bytes ("BBBBAAAA") começando em 0xffffd024|+0x0000.
Você tem quatro bytes ("AAAA") começando em 0xffffd028|+0x0004.
Ambos "AAAA" são iguais.
(A ferramenta que você está usando pode imprimir cada "linha" do endereço inicial até encontrar 0x00, como se fossem strings C.)
Do topo da pilha (endereço inferior) para baixo: