윈도우 환경에서 exe 파일을 분석할 경우 API 함수들을 많이 알고 있는 것이 분석에 도움이 된다. 디버거를 사용하여 현재 프로그램에서 사용되는 API 함수들을 나열할 수 있는데 함수들의 기능이나 리턴값을 알아야만 프로그램을 디버깅 하는 과정에서 브레이크포인트를 지정할 곳을 쉽게 찾아낼 수 있다. 여기서는 악성코드에서 자주 사용되거나 필히 알아 두어야 할 API 함수들에 대해서 살펴보도록 하겠다.
파일 및 디렉토리 관련 함수
- CreateFile : 파일을 생성하거나 연다
- ReadFile : 파일의 내용을 읽는다.
- WriteFile : 파일에 내용을 쓴다.
- SetFilePointer : 파일 포인터를 이동시킨다.
- CopyFile : 파일을 복사한다.
- GetFileAttribute : 파일이나 디렉토리의 속성을 저장한다.
- SetFileAttribute : 파일이나 디렉토리의 속성을 설정한다.
- FindFirstFile : 디렉토리에서 파일을 찾는다.
- FindNextFIle : 파일 검색을 계속한다. FindFirstFile 함수의 호출에 이어서 검색을 계속한다.
- GetModuleFileName : 파일의 절대 경로를 저장한다.
- GetSystemDirectory : 윈도우가 설치된 디렉토리를 저장한다.
- GetWindowsDirectory : 윈도우가 설치된 디렉토리를 알아낸다.
- GetCommandLine : 현재 프로세스의 commandline 문자열을 저장한다.
- Set CurrentDirectory : 현재 프로세스에 대해 현재 디렉토리를 바꾼다.
레지스트리 관련 함수
- RegCreateKey : 레지스트리키를 생성하거나 연다.
- RegOpenKeyEx : 레지스트리키를 연다.
- RegSetValueEx : 레지스트리 값을 설정한다.
- RegQueryValueEx : 타입과 데이터를 저장한다.
네트워크 관련 함수
- WSAStartup : WS2_32.DLL을 사용하기 위해 초기화 한다.
- socket : 소켓을 생성한다.
- recv : 연결되거나 바운드된 소켓으로부터 데이터를 받는다.
- send : 연결된 소켓으로 데이터를 보낸다.
- listen : 연결 요청이 들어오는 것을 기다린다.
- accept : 소켓을 통해 들어오는 연결을 허용한다.
- gethostbyname : 호스트 정보를 저장한다.
- ntohs : network byte order 를 host byte order 로 변환한다.
- inet_addr : IN_ADDR 구조체로 주소를 변환한다.
- WNetOpenEnum : 열거할 네트워크 자원에 대해 목록화 한다.
- WNetEnumResource : WNetOpenEnum 에서 나열된 데이터를 반복적으로 가져온다.
- InternetGetConnectedState : 로컬시스템의 연결 상태를 저장한다.
- ioctlsocket : 소켓의 입출력 모드를 제어한다.
메모리 관련 함수
- RtlZeroMemory : 한 메모리 블록을 0으로 채운다.
- GlobalAlloc : Heap 메모리를 할당한다.
기타함수
- ShellExecute : 프로그램 내에서 다른 프로그램을 실행시키기 위해 사용한다.
- GetProcAddress : SLL로부터 익스포트된 함수의 주소를 저장
- CreateThread : 실행할 쓰레드를 생성한다.
이 외에도 여러 가지 함수들을 알고 있어야 하며 함수들에 대한 자세한 내용은 WIN32.HLP 파일을 참조하면 된다.
'프로그래밍 > Windows API' 카테고리의 다른 글
GetLastError() 함수로 얻는 애러코드 (0) | 2010.12.11 |
---|---|
동적 링크 라이브러리(DLL) 사용 / 만들기 #1 (0) | 2010.11.16 |
동적 링크 라이브러리(DLL) 사용 / 만들기 #2 (0) | 2010.11.12 |
MultiByteToWideChar와 WideCharToMultiByte 함수 (2) | 2010.11.09 |
INI 파일 제어 함수 (Get...Profile... / Write...Profile...) (0) | 2010.11.04 |
API 함수 레퍼런스 (0) | 2010.11.04 |
레지스터 관련 - RegSetValueEx 함수 (0) | 2010.10.27 |
레지스터 관련 - RegOpenKeyEx 함수 (0) | 2010.10.27 |
레지스터 관련 - RegCreateKeyEx 함수 (0) | 2010.10.27 |
Windows 와 Linux Thread Control 함수 비교 (동기화 함수) (0) | 2010.10.27 |