티스토리 뷰

입력 받은 두 수 (a, b)를 더한 값을 지역변수 c에 담아 c를 리턴하는 c 함수이다.

int sum (int a, int b){

  int c = a + b;

  return c;

}


이를 어셈블리어로 표현해보면 아래와 같다.

push   ebp

mov    ebp, esp

push   ecx

mov    eax, [ebp + arg_0]        // 첫번째 인수를 eax 레지스터에 넣는다.

add     eax, [ebp + arg_4]        // 두번째 인수를 eax에 더한다.

mov    [ebp + var_4], eax        // 지역번수에 eax값을 넣는다.

mov    eax, [ebp + var_4]        // 리턴을 위해 eax에 지역변수 값을 넣는다.

mov    esp, ebp

pop     ebp

retn



push   ebp

mov    ebp, esp

이 부분이 함수의 시작을 알리는 부분이고


mov   esp, ebp

pop    ebp

이부분이 함수의 끝을 알리는 부분이다.


'reverse engineering' 카테고리의 다른 글

어셈블리어 (필수 옵코드)  (0) 2017.05.22
어셈블리어 (레지스터)  (0) 2017.05.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함