-
안드로이드 실행 파일 포맷 - dex (2)
연재 순서 첫번째 글: classes.dex 파일 포맷 (Header, String IDs) 두번째 글: classes.dex 파일 포맷 (Type IDs, Proto IDs) 세번째 글: classes.dex 파일 포맷 (Field IDs, Method IDs) 네번째 글: classes.dex 파일 포맷 (Class Defs, Map List) 1. classes.dex 추가 파일 포맷 이전 글에 이어 계속 설명을 이어갑니다. (3) Type IDs 다음은 classes.dex가 보유하고 있는 type들이다. 이 역시 헤더에 type 정보의 시작 위치와 개수가 저장되어 있다. print hdr['type_ids_size'] # 전체 Type 정보 개수 print hex(hdr['type_ids_off'])...
-
초간단 실시간 감시기 만들기 (3)
연재 순서 첫번째 글: 실시간 감시기란 두번째 글: 미니필터 드라이버를 사용하여 실시간 파일 I/O 확인하기 세번째 글: KicomAV 엔진을 사용하여 유해한 파일인지 확인하기 KicomAV 엔진을 C 코드에서 사용하기 KicomAV 는 (주) 누리랩의 최원혁 대표가 개발한 안티 바이러스 백신 프로그램이다. KicomAV 는 파이썬으로 개발되었으며 오픈소스여서 관심있는 개발자라면 누구나 소스코드를 확인할 수 있다. 더불어 “파이썬으로 배우는 Anti-Virus 구조와 원리” 라는 책에서는 KicomAV의 구조 및 악성코드 진단 방법을 자세하게 설명하고 있다. 이에 대한 내용은 아래의 링크에서 확인할 수...
-
초간단 실시간 감시기 만들기 (2)
연재 순서 첫번째 글: 실시간 감시기란 두번째 글: 미니필터 드라이버를 사용하여 실시간 파일 I/O 확인하기 세번째 글: KicomAV 엔진을 사용하여 유해한 파일인지 확인하기 WDK 설치하기 WDK는 Windows Driver Kit의 약어이다. 과거 DDK에서부터 최신 WDK의 변천사는 아래 링크에서 확인할 수 있다. https://en.wikipedia.org/wiki/Windows_Driver_Kit 윈도우 운영체제에서 동작하는 드라이버를 개발하려면 WDK를 설치해야 한다. 우리는 Windows Driver Kit 7.1.0 버전을 사용할 것이다. 이 버전을 설치하면 다양한 드라이버 샘플 소스코드를 제공받을 수 있고 Visual Studio 빌드 환경을 빌리지 않아도 Command 창을...
-
OLE 파일 구조 분석 (3)
연재 순서1. OLE 파일 구조 분석 (1) - Header, BBAT, SBAT 2. OLE 파일 구조 분석 (2) - Root Storage 3. OLE 파일 구조 분석 (3) - Stream Object Stream Object 스트림은 OLE 파일 중에서 가장 큰 비중을 차지하고 있는 데이터이다. 스트림의 데이터(오브젝트)를 읽기 위해서는 Root Storage(Root Entry)를 통해 모든 디렉터리들을 먼저 읽어와야 한다. 스트림은 디렉터리의 타입이 Stream (0x02)인 경우를 말하며 헤더에 정의된 Max Small Stream Size보다 크기가 작은 경우 Small Stream, 같거나 클 경우...
-
초간단 실시간 감시기 만들기 (1)
연재 순서 첫번째 글: 실시간 감시기란 두번째 글: 미니필터 드라이버를 사용하여 실시간 파일 I/O 확인하기 세번째 글: KicomAV 엔진을 사용하여 유해한 파일인지 확인하기 실시간 감시기란 과연 실시간 감시기란 무엇일까? 일반적으로 실시간 감시기는 시스템 이벤트가 발생할 때 유해 여부를 검사하여 유해한 것은 차단하고 그렇지 않은 것은 허용하는 프로그램을 일컫는다. 윈도우 환경이라면 시스템 이벤트는 파일 연산, 레지스트리 연산, 프로세스/스레드 연산, 네트워크 연산 등으로 다양하다. 그리고 파일 연산을 좀 더 구체화하면 파일의 생성, 읽기, 쓰기, 이름변경, 이동, 삭제,...