본문 바로가기

Reversing/개념

[Reversing] Handray

https://shayete.tistory.com/entry/3-%ED%95%B8%EB%93%9C%EB%A0%88%EC%9D%B4-%EA%B8%B0%EB%B3%B8-%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC-%EB%AA%85%EB%A0%B9%EC%96%B4

 

3. 핸드레이 & 기본 어셈블리 명령어

Shayete입니다. 3번째 강의는 어셈블리 핸드레이에 대해 포스팅하도록 하겠습니다.  어셈블리 핸드레이는 어셈블리어를 C언어로 복원시키는 걸 의미합니다. C에서 어셈블리어로도 복원시킬 수

shayete.tistory.com


< 함수 프롤로그 >

1. push ebp : 이전 함수의 ebp를 스택에 저장

2. mov ebp, esp : main 함수 스택 포인트를 따로 설정


3. mov DWORD PTR [ebp-0x4], 0xa : v1 (첫 번째 지역변수) = 10

4. mov DWORD PTR [ebp-0x8], 0x14 : v2 (두 번째 지역변수) = 20

5. mov eax, DWORD PTR [ebp-0x8] : v2를 eax 레지스터에 넣음

6. mov edx, DWORD PTR [ebp-0x4] : v1을 edx 레지스터에 넣음

7. add eax, edx : v1과 v2를 더함 /eax = eax + dex = v2 + v1

8. mov DWORD PTR [ebp-0xc], eax : v3 = v2+v1

9. mov eax, DWORD PTR [ebp-0xc]

10. mov DWORD PTR [esp+0x4], eax : printf의 두번째 인자는 v3임

11. mov DWORD PTR [esp], 0x80484f0 : printf의 첫번째 인자는 0x80484f0에 있는 값

12. call 0x80482f0 <printf@plt> : “plus : 30”이 나옴


< 함수 에필로그 >

13. leave

14. ret

 

 


[ 정리본]