수호의 메모장
Stack 및 Calling Convention 정리 본문
Linux | Window |
RDI | RCX |
RSI | RDX |
RDX | R8 |
RCX | R9 |
R8 | Stack |
R9 | Stack |
http://keepcalmswag.blogspot.com/2018/09/push-pop.html
https://nekoplu5.tistory.com/entry/64%EB%B9%84%ED%8A%B8-Calling-Convention
push ebp
==
sub esp, 0x4
mov [esp], ebp
pop ebp
==
mov ebp, [esp]
add esp, 0x4
call some_addr
==
push return_addr
jmp som_addr
ret
==
pop eip
jmp eip
The reason for pop eip ->
mov eip, [esp]
add esp, 0x4
CALL로 인해 Return address가 Stack에 Push 되어있기 때문.
[EBP] = previous ebp addr
[EBP + 0x4] = ret_addr
EBP + -> argument
EBP - -> local variables