1
誰かがこのコードを私に説明するのに役立つでしょうか?x86アセンブリのバッファ
.text:00401270 ; int __cdecl main(int argc,const char **argv,const char *envp)
.text:00401270 Dst = byte ptr −80h
...More Code...
.text:00401270 push ebp
.text:00401271 mov ebp, esp
.text:00401273 sub esp, 80h
.text:00401293 push 80h
.text:00401298 push 0
.text:0040129A lea eax, [ebp+Dst]
.text:0040129D push eax
.text:0040129E call _memset
サイズが0x80のバッファが作成され、_memsetが呼び出されると値が0で埋められます。しかし私はポインタ[ebp + Dst]の使い方を理解していません。基本ポインタ(ebp)が全く関与しているのはなぜですか?さらに、Dstが負の値に設定されているのはなぜですか?
これは、ebpと入力するためのものです。うん、私はちょっとスタックが下向きに作られていることを忘れていますので、負の値が意味をなさないので、ちょうどsub esp、80を見て、バッファがebpの直下に割り当てられているのを見てください。それを明確にしてくれてありがとう。 – user1210446