Disk

: 시스템에 장착되어 있는 파티션(볼륨)을 나누어 사용하는 저장장치.

자기를 가진 둥근 원반을 회전시켜서 자성을 이용하여 데이터를 기록하는 HDD와 같은 드라이브를 의미하나

반도체를 사용하는 플래시 메모리, SSD / 주 기억장치의 공간을 활용하는 RAM 드라이브 

모두를 디스크로 분류하여 관리한다.


* 포함되는 것 - HDD(hard disk drive), Flash memory drive, RAM 

* 종류 - 고정 디스크(HDD, SSD, ram에 생성된 RAM 디스크)

  이동식 디스크(usb), 

  가상 디스크 : 다른 저장 매체에 존재하며 언제든지 시스템이 연결되거나 분리될 수 있다. (이미지파일?)

cf) Disc : 레이저를 이용해 데이터를 기록하는 광디스크로, CD, DVD, 블루레이 등이 있다.





Volume 

: 파일 시스템으로 포맷된 디스크상의 저장영역.

볼륨에는 드라이브 문자가 할당된다.

윈도우 7에서는 디스크 관리에서 더이상 파티션이란 단어를 사용하지 않는다.

기본 디스크의 파티션과 동적 디스크의 볼륨 --> 모두 볼륨으로 취급!


* 파티션과 비슷한 의미로 쓰이긴 하지만 엄밀하게는 같은게 아니다.

동적 디스크에서는 볼륨은 여러개의 디스크로 스팬될 수도 있다.

기본 디스크에서 저장영역 = partition / partition 후에 포맷가능. 

따라서, 기본 디스크에서는 하나의 파티션이 하나의 볼륨이 된다.

여러 디스크에 걸쳐 있을 수도 있고하나의 디스크가 여러 개의 볼륨을 가질 수도.

Cf) 파티션 – 단일 물리디스크 // 볼륨 – 하나 또는 그 이상의 파티션





Partition

: 1) 디스크의 공간을 논리적으로 분할(할당, 파티셔닝) 해 놓은 공간으로 나누어진 영역이며, 독립적으로 동작한다.

: 2) 별도의 디스크처럼 작동하는 하드디스크의 일부


* 목적 – 하나의 디스크를 서로 분리된 여러 개의 디스크처럼 쓰는 것. 

  바이러스에 대한 피해를 최소화 할 수 있고서로 다른 운영체제를 쓰는 등 활용가능.

  운영체제별로 나온 프로그램을 이용하여 파티셔닝이 가능하다.

* 주요 파티셔닝 방식 - MBR, GPT / cf) window와 dos는 FAT 파티션을 이용?

* 종류 - 1) 주 파티션 : 기본디스크에서 만들 수 있다. 갯수 제한이 있다.

  2) 확장 파티션 : 기본디스크에서 만들 수 있다. 개수 제한이 없고 주파티션과 동일.

  3) 논리 드라이브 : 기본디스크의 확장 파티션에서 만들 수 있다.  개수 제한이 없고, 주파이션과 다르게 부팅불가

* 할당되지 않은 공간 = 파티션이 생성되지 않은 공간 = 포맷 불가능, 데이터 기록 불가능

  파티션이 없다 = 디스크의 전체 공간이 할당되지 않은 빈 공간으로 되어있다.

  '디스크의 전체 공간을 단일 파티션으로 생성하여 사용하고 있다.' --> O






File System

:  저장 장치에 파일을 어떻게 쓰고, 관리하고, 찾고, 읽을 것인지에 대한 규칙, 체계.

이러한 체계가 있어야만 파일을 읽고 쓸 수 있다. 


* 목적 - 저장 장치에 데이터를 기록하고 사용하기 위해

* 주요 파일 시스템 - FAT16, FAT32, exFAT, NTFS

Format - 저장장치에 이러한 파일 시스템을 구죽하는 것.




Data Unit

: 특정 파일 시스템에서 사용가능한 데이터 스토리지의 최소 독립 유닛







 요약 하자면,


 디스크 = 시스템에 장착된 저장매체

 파티션 = 별도의 디스크처럼 작동하는 하드디스크의 일부

 볼륨 = 파일 시스템으로 포맷된 디스크 상의 저장영역 - usb를 인식시키면 볼륨이 인식된다.

 파일 시스템 = 저장매체에 어떻게 파일을 쓰고 관리할 것인지에 대한 체계


 " 디스크를 파티셔닝해서 파일시스템을 포맷하면 볼륨이 된다. " 








참고 블로그))

http://cappleblog.co.kr/135   : 파일시스템

http://cappleblog.co.kr/130   : 디스크, 파티션, 볼륨


슬루스킷 설치를 하고 분석과정들을 보며 검색을 하던중

"GRR (Google Rapid Response) : 원격 라이브 포렌식에 중점을 둔 침해사고대응 프레임워크"

라는 글을 접하고, 프레임 워크란 무엇인지에 대해 알아보았다.



라이브러리와 프레임 워크는, 

개발자로 하여금 원하는 기능을 구현하는데 있어 편리함을 제공한 다는 점에서는 공통점을 지닌다.


라이브러리는 

자주 쓰일만한 함수(유틸, 클래스)들을 묶어두어 개발자가 필요할 때 편리하게 쓸 수 있도록 한 것이어서 

동일한 개발자가 동일한 프로그램을 짜더라도 그 클래스의 구조나 데이터 저장방식등이 현저하게 다르게 나타날 수 있다.


반면에, 

프레임 워크에는, 제작자가 미리 만들어 놓은 '확장 가능한 기반코드'라는 것이 있다.

이 코드와 클래스들은 향후에 이 프레임워크를 이용하는 사람들이 기능을 추가하고 뺄 것을 충분히 고려하여 만들어 놓은 틀로,

이 기반코드를 벗어나고자 하면 제약사항이 생기거나, 혹은 비효율을 초래한다.

즉, 개발자는 설계의 기반이 되는 '기반코드'를 바탕으로

추가적으로 주어진 '라이브러리'를 이용하여 원하는 대로 기능을 추가하면 되는 것이다. 

따라서, 일정 수준 이상의 품질을 보장받으면서 빠른 시간안에 완성과 유지 보수가 가능한 환경을 제공하게 된다.



"프레임 워크란, 

소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"

 




SetWindowsHookEx

1. 역할

: 특정 hook을 설치해둔다. (모든 프로세스가 체크 됨)

그러면, 어떤 프로세스에서 해당 메시지가 발생햇을 때 

OS가 해당DLL파일을 해당 프로세스에 injection하고 

등록된 hook procedure을 호출


즉, injection하고 바로 내가 원하는 콜백함수 호출.


2. 인자 값

- int idHook                 // hook type

- HOOKPROC lpfn         // hook procedure은 운영체제가 호출해주는 콜백 함수       DLL 내부에 존재해야 한다. ex)KeyboardProc

HINSTANCE hMod      // 위 함수가 속한 DLL의 인스턴스 핸들

DWORD dwThreadId   // hook을 걸고 싶은 thread의 ID 값    ex) 0을 넣으면 global hook이 설치된다.


3. 반환 값










'CODING(C) > WIN API 32' 카테고리의 다른 글

window API 주요 구조체 및 변수  (0) 2016.07.27

+ Recent posts