728x90

윈도우 API

- 윈도우 어플리케이션 개발시 사용하는 API

- 이 API로 OS에서 제공하는 기능 사용

- Win32 : 32비트 윈도우 API

 

 

일반적인 윈도우 API

- 동적 라이브러리 DLL로 제공

- 다양한 언어에서 호출하여 사용 가능

종류 특징
 kernel32.dll 파일 시스템, 디바이스, 프로세스 등 기본 리소스 접근 기능
user32.dll ui 지원, 윈도우 창 생성 관리, 화면 및 메시지 표현
gdi32.dll 모니터 등 출력장치 관리 지원
comdig32.dll 파일 입출력 및 표준 대화 창 관리
comctl32.dll 상태 바, 진행 바 등 응용프로그램 등 접근 지원
shell32.dll 쉘 기능 접근 지원
netapi32.dll 다양한 통신 기능을 응용프로그램에서 쓸수있도록 지원
advapi32.dll 레지스트리, 윈도우 서비스 시작 종료, 계정 관리 등 

 

ctypes

- 파이썬으로 ctypes를 이용하여 DLL과 C언어 변수 사용 가능

ctypes 기능 설명
DLL 로드 windll.kernel32, windll.user32
API 호출 windll.user32. SetWindowsHookExA
함수 인자 자료형 지정 printf = libc.printf
print.argtypes = [c_char_p, c_int, c_double]
printf("String %s, int %d, bouble %f\n", "hello", 1, 3.14) 
함수 반환값 타입 지정 libc.strchr.restype = c_char_p
자료형 예시 i = c_int(42)
pi = POINTER(c_int)
포인터 전달 f = c_float()
s = create_string_buffer("\000" *32)
windll.msvcrt.sscanf("1 3.14 wow", "%f %s", byref(f), s)
콜백 함수 선언 def py_cmp_func(a, b):
    print "py_cmp_func", a, b
    return 0

CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
cmp_func = CMPFUNC(py_cmp_func)
windll.msvcrt.qsort(ia, len(ia), sizeof(c_int), cmp_func)
구조체 선언 class POINT(Structure):
    _fileds_ = [("x", c_int), ("y", c_int)]

point = POINT(10, 20)

 

300x250

'컴퓨터과학 > 통신, 보안' 카테고리의 다른 글

해킹 - 6. 키보드 후킹  (0) 2020.07.29
해킹 - 5. 후킹  (0) 2020.07.29
해킹 - 3. 관련 용어  (0) 2020.07.28
해킹 - 2. 해킹 종류  (1) 2020.07.28
해킹 - 1. 해킹 개요  (0) 2020.07.28

+ Recent posts