본문 바로가기

파일

MMF(Memory Mapped File) 개념 : File 을 Memory 에 Mapping(연결) 가상 메모리 중 파일에 연결되어 있는 영역에 데이터를 저장한다. 이렇게 메모리에 저장된 데이터는 실제 파일에도 영향을 미친다. 즉, 데이터가 메모리뿐만 아니라 메모리에 연결된 파일에도 저장되는 것이다. 장점 : 1. 프로그래밍 편리 : 메모리상에 저장된 데이터를 조작하는 방식으로 파일 내 데이터를 조작할 수 있다. 2. 성능 향상 : 메모리는 중간에서 파일과 데이터의 캐쉬 역할을 하여 성능을 향상시킨다. MMF 구현 : 1. 파일 개방 : CreateFile() 2. 파일 연결 오브젝트 생성 : CreateFileMapping() HANDLE CreateFileMapping( HANDLE hFile, // 메모리에 연결할 파일의 핸들 LPSECU.. 더보기
파일 I/O 파일 열기 : HANDLE CreateFile( LPCTSTR lpFileName, // 개방(open)할 파일 이름 DWORD dwDesiredAccess, // 읽기/쓰기 모드를 지정한다.(or (l) 연산으로 결합) GENERIC_READ : 읽기 모드 GENERIC_WRITE : 쓰기 모드 DWORD dwShareMode, // 파일 공유방식 0 : 다른 프로세스에 절대 공유 불가. 중복 개방 불가 FILE_SHARE_READ : 다른 프로세스에서 동시 읽기 접근 가능 FILE_SHARE_WRITE : 다른 프로세스에서 동기 쓰기 접근 가능 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 보안 속성 DWORD dwCreationDisposition, // 파일의.. 더보기
윈도우 파일시스템(File System) 파일시스템(File System) : 운영체제(OS)가 하드디스크에 데이터를 읽고, 쓰고 찾는, 파일을 관리하기 위한 규칙 FAT32 : File Allocation Table 32 (파일 할당 테이블) Sector(섹터)를 몇개의 최소 단위로 묶어서 각각의 묶음(클러스터 : Cluster)을 기본단위로 파일을 저장한다. 예를 들어 1MB의 디스크가 있다고 하면 1 Sector = 4096 byte (4kb) 1MB = 1024KB = 4KB*256 즉 섹터수는 256개이다. FAT32 시스템은 이 256섹터를(2섹터 = 1클러스터로 가정) 클러스터로 묶어서 128 클러스터로 나타낸다. 이 클러스터들에 번호를 붙여서 파일을 저장하고 검색하는 기준으로 삼는다. (색인이라고 보시면 됩니다) 클러스터 수의 효.. 더보기
헥스에디터(Hex-Editors) 헥스에디터(Hex-editors) : 바이너리 파일을 분석하거나 수정할 때 사용한다. 파일을 16진수 코드로 보여준다. (참고 : 16진수 코드나 어셈코드나 같은겁니다. 어셈코드는 16진수 코드를 우리가 보기 쉽게 문자로 치환했을 뿐입니다. 예를 들어 16진수로 0x6A 라는 숫자가 어떤 일을 한다고 했을때 이 숫자만 보고 그 일을 한다는 것을 사람이 알기에 쉽지 않으므로 여기에 PUSH 라는 이름을 붙여 사람이 해석하기 쉽게 해주는겁니다. 즉 16진수 코드랑 어셈코드는 같은 것을 표현하는데 숫자냐, 문자냐일 뿐인것이죠) .exe나 .dll 같은 윈도우 PE 구조의 파일이나 확장자가 없거나 다른 확장자의 파일을 분석할때 헥스에디터로 열어서 그 바이너리 파일의 헤더를 보고 어떤 종류의 파일인지 (참고 : .. 더보기
안티 디버깅(Anti-Debugging) 안티 디버깅(Anti-Debugging) : 디버깅을 방지하고 분석을 하지 못하도록 하는 기술. 디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법등 다양한 방법을 사용하여 분석을 방해한다. (참고 : 디버깅(Debugging) : 프로그램의 특정 부분에 Break Point를 설정한 후 실행을 하면 그 위치에 프로그램이 멈추게 되며 메모리에 값이 제대로 들어가 있는지, 코딩한 흐름대로 프로그램이 진행되는지 단계적으로 실행할 수 있다) 안티 디버깅 기술에는 수많은 방법들이 존재하며 계속 발전하고 있으며 이에 따라 이를 우회하는 기술도 계속적으로 발전하고 있다. CheckRemoteDebuggerPresent() Windows API Detecting Breakpoints by C.. 더보기
시스템 모니터링 툴 파일과 레지스트리 변화와 네트워크 상태, 프로세스의 상태를 분석하는 툴들을 소개한다. (2010. 11. 15. 월요일 확인결과 Filemon 이 없어지고 Process Moniter 가 생겼네요. 사용법은 똑같으니 다운받아서 아래처럼 사용하세요 ㅎㅎ) ProcessMonitor : 어플리케이션이 파일들을 어떻게 사용하는지 실시간으로 모니터링해서 오픈, 읽기, 쓰기, 삭제 등의 상황을 정확히 출력해준다. Filemon.exe를 실행하면 돋보기 모양 : 모니터링(Ctrl+E), 모리시계모양 : 필터링(Ctrl+L) 돋보기 모양의 모니터링 버튼(Ctrl+E)을 이용하여 모니터링 시작 · 중지를 할수 있다. 프로그램을 켜놓기만 하면 이벤트 정보가 로그로 쌓이지만 그 양이 너무 많아서 옵션을 주어야 한다. 먼저.. 더보기