728x90
반응형
개요
윈도우 API를 보면, 흔히보게 되는 int 혹은 char 같은 자료형이 아닌 이상한 자료형들이 있다.
개인적으로 궁금해서, Windows 개발 문서 를 찾아보았다.
위 문서를 보고 얻은 결론
- 기존에 있던 자료형을 typedef나 define을 통해 이름을 바꾸거나 조합을 했을 뿐이다.
- 앞에 P나 LP가 들어가는 것은 포인터 자료형이다.
- 조합된 자료형이 또 다른 자료형으로 되기도 한다.
- 이러한 자료형은 C혹은 C++을 기반으로 제작되었다.
예시
1, 2번 결론에 대한 예시
- 예를 들어, "LPDWORD"는 "LP+DWORD"이다.
- "DWORD"는 unsigned long을 typedef 선언한 것이며, "LP"는 이런 unsigned long을 포인터로 만든 것이다.
- 결론적으로, "LPDWORD"는 (unsigned long *) 형태의 자료형인 것이다.
3번 결론에 대한 예시
- 예를 들어, "HANDLE"이라는 자료형이 있는데, 이는 "PVOID"의 이름을 바꿨으며, "PVOID"는 void 포인터를 이름을 바꾼 것이다.
- 결국은 "HANDLE" = "PVOID" = (void *) 라는 등식이 성립된다. (물론 이론적으로 그렇다는 거지 실제로 쓰임은 다를 수 있다.)
- 참고로, "HANDLE"은 메모리에 로드된 데이터를 가르킬때 쓰는 용도라고 한다.
반응형
'정보보호 > 리버스엔지니어링' 카테고리의 다른 글
[리버싱] Windows 환경에서 파일과 메모리에서의 주소체계 (1) | 2024.01.06 |
---|---|
[PWN] pwnable.kr collision 문제풀이 (0) | 2024.01.06 |
[PWN] pwnable.kr fd 문제풀이 (0) | 2024.01.06 |
[F-Security] Level1. 문제 풀이 (0) | 2021.05.09 |
STOS / STOSB / STOSW / STOSD 이야기 (0) | 2019.02.10 |