본문 바로가기

정보보호/리버스엔지니어링

Windows Data Type 이야기

728x90
반응형

개요

윈도우 API를 보면, 흔히보게 되는 int 혹은 char 같은 자료형이 아닌 이상한 자료형들이 있다.
개인적으로 궁금해서, Windows 개발 문서 를 찾아보았다.


위 문서를 보고 얻은 결론

  1. 기존에 있던 자료형을 typedef나 define을 통해 이름을 바꾸거나 조합을 했을 뿐이다.
  2. 앞에 P나 LP가 들어가는 것은 포인터 자료형이다.
  3. 조합된 자료형이 또 다른 자료형으로 되기도 한다.
  4. 이러한 자료형은 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"은 메모리에 로드된 데이터를 가르킬때 쓰는 용도라고 한다.
반응형