애플리케이션 해킹 개요 - Windows 애플리케이션의 기본 개념
System/Cybersecurity

애플리케이션 해킹 개요 - Windows 애플리케이션의 기본 개념



  Python으로 윈도우 애플리케이션을 해킹하기 위해서는 Windows API에 대한 기본 지식이 필요하다. Windows API는 Microsoft에서 제공하는 API[각주:1] 모음이다. 애플리케이션을 개발하려면 Windows API를 통해 운영체제, 또는 커널에서 지원하는 다양한 기능을 활용할 줄 알아야 한다. 애플리케이션 해킹 관련 게시글들에서는 Windows 32bit 환경에서 지원되는 Win32 API를 주로 다룰 예정이다.


  Windows 애플리케이션을 개발할 때에는 lib와 DLL 형태의 라이브러리를 사용한다. lib는 정적 라이브러리로, Windows 실행 파일인 exe 파일이 생성될 때 같이 포함된다. DLL(Dynamically Linked Libraries)는 동적 라이브러리로, 애플리케이션 실행 시점에 기능이 호출되는 방식으로 사용된다. 여기서 Win32 API는 대부분 DLL 형식으로 지원된다. 대표적인 DLL들은 아래 표를 참고하자.


종류

 특징

 kernel32.dll

 파일 시스템, 디바이스, 프로세스, 스레드와 같은 기초적인 리소스에 대한 접근

 user32.dll

 · 사용자 인터페이스 담당

 · 윈도우 창 생성·관리, 윈도우 메시지 수신, 화면에 텍스트 표현, 메시지 박스 표현

 advapi32.dll

 레지스트리, 시스템 종료/재시작, 윈도우 서비스 시작/종료/생성, 계정 관리 등

 gdi32.dll

 모니터, 프린터, 기타 출력 장치에 대한 관리

 comdlg32.dll

 파일 열기, 파일 저장, 색상, 폰트 선택과 관련된 표준 대화 창 관리

 comctl32.dll

 상태 바, 진행 바, 툴 바 등 운영체제에서 지원하는 기능에 대한 응용 프로그램의 접근

 shell32.dll

 운영체제의 셸에서 제공하는 기능을 응용 프로그램이 접근할 수 있도록 지원

 netapi32.dll

 운영체제에서 지원하는 다양한 통신 기능을 응용 프로그램이 접근할 수 있도록 지원


  Windows용 개발 언어(Visual C++, C# 등)는 Win32 API를 직접 호출해서 사용할 수 있다. Win32 API는 저수준 운영체제 기능을 제어할 수 있는 다양한 인터페이스를 제공하기 때문에 애플리케이션 개발뿐만 아니라, 디버깅 및 해킹 프로그램 개발에 많이 사용된다.

  1. 응용 프로그래밍 인터페이스(Application Programming Interface, API) : 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 [본문으로]