본문 바로가기

2018/112

[리버스 엔지니어링] 함수 호출 규약 정리 함수 호출 규약이란?- 함수를 호출하는 방식에 대한 약속을 의미합니다.- 인자를 전달하는 방식과 함수 종료시 스택 공간을 정리하는 방법에 따라 달라집니다. cdecl- 인자 전달 순서 : 오른쪽에서 왼쪽- 인자 전달 매체 : 스택- Stack Frame 정리 : Caller호출한 main()에서 스택을 정리하는걸 확인 할 수 있습니다. C/C++에서의 표준 함수 호출규약으로, Caller가 인자를 정리하는 규약이며 가변인자를 사용할 수 있습니다.(printf와 같이 긴 인자를 사용할 수 있습니다.) stdcall- 인자 전달 순서 : 오른쪽에서 왼쪽- 인자 전달 매체 : 스택- Stack Frame 정리 : Callee호출당한 add()에서 스택을 정리하는걸 확인 할 수 있습니다.return 8을 통해 .. 2018. 11. 14.
[리버스 엔지니어링] CPU 레지스터 레지스터 : CPU 내부에 존재하는 다목적 저장공간 vs 일반적인 메모리(RAM) : 레지스터가 속도가 훨씬 빠르다. 레지스터를 알아야 하는 이유 어셈블리어의 대부분이 레지스터를 조작하는 것이기에 레지스터의 용도의 내용을 이해 해야한다. 가장 기초가 되는 Register = Basic program execution registers General Purpose Register (32bit - 8개) Segment Register (16Bit - 6개) Program Status and Control Register (32Bit - 1개) Instruction Pointer(32Bit - 1개) General Purpose Register EAX : Accumulator for operands and r.. 2018. 11. 14.
반응형