티스토리 뷰

1. 기본 명령어 

EAX : 기본적인 산술 논리 연산 리턴값 전달
EBX : 간접 번지지정 ([ebp+var_8]같은거)
ECX : 반복문에 대한 카운트 몇번할지 정해주기도 하고 지역변수 지정에도 주로사용하고 EDX : 간접 번지 지정 주로 연산할때 나머지나 머 이런거

ESP : 스택의 가장 최근 데이터를 가르키게 되는 포인터 TOP포인터
EBP : 스택프레임을 지정할수있게 가장 아래에 깔리는 포인터 프레임포인터 라고도한다                        ESI : 문자열 소스 인덱스

EDI :소스인덱스가 가르킬 곳

EIP 레지스터의 값을 변경할 수 잇는 어셈블리 명령어는?                                                                                                                                                                                                                                                                       조건분기 명령어 또는 CALL 또는 RET (call은 리턴주소값이 필요) 

2. push의 용도?

       데이터백업, 지역변수 할당, 매개 변수 전달

3. stack의 용도

데이터 백업

지역변수 할당

매개변수 전달

필요할 경우 OS에 도와줌 함수 호출 

4. stack Frame 설명

함수가 가지는 고유한 영역, 지역 변수 설정이 끝나면 해제되는게 이 영역에서 지역변수가 설정되기 때문이다.

5.Frame Pointer Omission에 대해 설명하고, 장 단점을 기술하시오

우리가 꼭 스택프레임의 시작지점을 ebp를통해서 가르켜야 돼는것은 아니다 .

ebp의 주 역할은 시스템 에 따라 다르게 주소번지가 해당되기 때문에 고정적인 주소값을 줄수가 없다.

ebp라는 녀석을 통해서 상대적으로 변수에 접근을 할 수잇게 한다.

지역변수나 매개변수에 접근하기 위핚 기준점이다.

ebp를 사용하지 않으면 스택을 가르키는 또 다른 포인터인 esp+N형태로 나타낸다.

단점 : 스택의 상황에 따라 값도 수시로 변하기 때문에 직접적인 구분이 어려움

(개발자 입장에서는 장점 )리버싱입장엔 단점) 장점 : ebp가 연산에 사용될수도 잇기 때문에 속도가 빨라진다

함수 에필로그 프롤로그의 코드들이 필요가 없다. 코드 양이 줄어든다. 

 6.함수 프롤로그와 에필로그

 함수 프롤로그 : push ebp mov ebp , esp 함수 에필로그 : mov esp,ebp pop ebp 


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함