본문 바로가기
반응형

Study/리버싱6

[1] 32bit와 64bit의 함수 호출 규약 함수 호출 규약(Calling Convention)이란? 함수를 호출할 때 파라미터를 어떤 방식으로 전달할지 정해놓은 규약을 말한다. add라는 함수가 있다고 가정할 때 main 함수에서 add를 호출하면서 파라미터를 전달할 것이다. 그때 전달하는 파라미터는 스택에 저장된다. 그런데 만약 add함수를 또 호출하게 된다면 처음 호출할 때 쌓였던 파라미터 위에 또 파라미터가 쌓이기 때문에 유효하지 않은 파라미터를 삭제하는 과정이 필요하다. 그렇기 때문에 유효하지 않은 파라미터를 가리키고 있는 ESP를 증가시켜서 스택을 정리해주는 것이다. 그래서 스택을 정리하는 방식에 대한 규약이 함수 호출 규약이다. 32bit 함수 호출 규약 32bit 함수 호출 규약으로는 cdecl, stdcall, fastcall이 있.. 2020. 9. 14.
[0] 32bit 레지스터와 스택 구조, 스택 프레임 범용 레지스터 - 범용 레지스터는 총 8개로 각 범용 레지스터의 크기는 당연히 32bit다. ① EAX : 피연산자 및 결과 데이터를 위한 누적 장치 ② EBX : 메모리 구조를 저장 ③ ECX : while, for 같은 반복 명령어를 사용할 때 반복 카운터로 사용한다. ④ EDX : 데이터를 저장하고 부호확장 명령, 큰 수 연산에 사용된다. 위의 4개의 레지스터는 주로 산술연산 명령어에서 상수/변수 값을 저장하는 용도로 사용된다. ⑤ ESP : 스택의 끝 지점을 가리킴 ⑥ EBP : 스택의 시작 지점을 가리킴 ⑦ ESI : 데이터를 조작하거나 복사할 때 복사할 데이터의 주소를 저장한다. ⑧ EDI : 데이터를 복사할 때 목적지의 주소가 저장된다. 세그먼트 레지스터 - 종류는 총 6개고 크기는 16bi.. 2020. 9. 14.
반응형