Windows 3

[WIKIBOOKS] Calling Conventions

https://ko.wikipedia.org/wiki/X86_%ED%98%B8%EC%B6%9C_%EA%B7%9C%EC%95%BD https://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions Calling Conventions 정리 매개변수 스택 순서: 오른쪽->왼쪽 cdecl: caller가 스택정리 stdcall: winAPI, callee가 스택정리 thiscall: ecx에 this포인터 저장 (주의할 점은 컴파일러마다 this 포인터를 어떤 레지스터에 담을지가 다르다.) 매개변수 저장 순서: rcx,rdx,r8,r9,스택 (MS x64) fastcall: 64비트 아키텍쳐, callee가 스택정리 매개변수 저장 순서: RDI, RSI, RD..

Windows 2020.07.30

RVA + 이미지 베이스 = 섹션이 로드될 가상 주소

섹션: 섹션은 같은 역할을 하는 데이터를 정리한 블록이다. 섹션은 가상주소공간(RVA)에 로드된다. RVA: 가상주소공간, RVA는 이미지베이스부터의 상대주소다. 이미지베이스: 실행파일을 가상주소 공간에 로드할 떄 기준이 되는 주소다. Windows에서 EXE파일은 0x400000번지 DLL은 0x10000000번지가 되도록 링커에서 설정한다. RVA + 이미지 베이스 = 섹션이 로드될 가상 주소

Windows 2020.06.24

64비트 알아두어야할 점

AMD에서 32비트와 호환되는 AMD64를 만들었고 이것을 INTEL이 라이센스를 사들여 INTEL64로 바꾸게 됨 1. 64비트 레지스터 64비트에서는 R8~R15레지스터가 추가됨. 기존비트에서 32비트 더 확장되어 RAX, RBX로 사용됨. 세그먼트 레지스터는 사용하지 않으며 32비트 호환용으로만 제공됨. 2. 함수호출 규약 32비트에서는 cdecl, stdcall, fastcall 등이 존재했지만 64비트에서는 변형된 fastcall 하나로 만들어졌다. (INTEL) 64비트에서 파라미터는 RCX, RDX, R8, R9 순서로 들어가게 되며, 실수일 경우 XMM0, XMM1, XMM2, XMM3 순으로 들어가게 된다. 파라미터가 5개가 넘어가는 경우 5번째부터 스택에 저장시켜 전달한다. AMD는 R..

Windows 2020.01.15