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를 입력해야합니다. 네, 스택이 아래로 세우므로 네거티브 val이 의미가 있다는 것을 잊어 버렸습니다. 그리고 저는 서브 esp, 80을 살펴보고 버퍼가 ebp 바로 아래에 할당 된 것을 보았을 것입니다. 그 점을 명확히 해 주셔서 감사합니다. – user1210446