※ 해당 글에 대해 무단 재배포 및 상업적으로 사용하실 수 없습니다.
레지스터(Register) 란 무엇인가?
- 마이크로소프트 윈도우 운영체제에서 운영체제와 응용프로그램 운영에 필요한 정보를 저장하기 위해 고안된 계층형 데이터베이스
- 부팅 과정부터 시작하여 Windows에 진입하는 작업 과정, 각종 프로그램들이 실행되는 모든 과정들이 레지스트리에 기록된 정보를 바탕으로 진행
- Windows 3.11, 95, 98, ME, NT, 2000, XP, 2003, Vista, 2008, 7, 2012. 8에서 사용
- 기본 구성 항목은 Key / Value로 구성되며 Value는 Name, Type, Data로 이루어짐
- 최상의 Hive Key(Root Key)는 Windows 2000/2003/XP/7는 5개로 구성되어 있으며 Windows 98 / ME는 6개로 구성
※ Hive
- 레지스트리 정보를 저장하고 있는 물리적인 파일입니다.
- 데이터의 백업을 포함하는 파일을 지원하는 집합을 가진 레지스트리의 키, 하위, 가치관의 논리적 그룹입니다.
- 활성 시스템의 커널에서 하이브 파일을 관리합니다.(일반적인 방식으로는 접근이 불가합니다)
레지스트리 구조
1. Hive의 물리적 위치
- Hive에 저장된 모든 정보는 C:\WINDOWS\System32\config 폴더에 저장
- DEFAULT, SAM, SECURITY, SORTWARE, SYSTEM 으로 확장자 명이 없는 파일로 나누어져 보관된다.
2. 물리적 Hive Key 관련 정보
① DEFAULT
- 위치 : C:\WINDOWS\system32\config
- 하이드 : DEFAULT
- 관련 하이브 파일 : default, default.LOG, default.SAV
- 해당 레지스트리 키 : HKEY_USER/DEFAULT
② SAM
- 위치 : C:\WINDOWS\system32\config
- 하이브 : SAM
- 관련 하이브 파일 : SAM, SAM.LOG, SAM.SAV
- 해당 레지스트리 키 : HKEY_LOCAL_MACHINE/SECURITY/SAM
HKEY_LOCAL_MACHINE/SAM
③ SECURITY
- 위치 : C:\WINDOWS\system32\config
- 하이브 : SECURITY
- 관련 하이브 파일 : SECURITY, SECURITY.LOG, SECURITY.SAV
- 해당 레지스트리 키 : HKEY_LOCAL_MACHINE/SECURITY
④ SOFTWARE
- 위치 : C:\WINDOWS\system32\config
- 하이브 : SOFTWARE
- 관련 하이브 파일 : software, software.LOG, software.SAV
- 해당 레지스트리 키 : HKEY_LOCAL_MACHINE/SOFTWARE
⑤ SYSTEM
- 위치 : C:\WINDOWS\system32\config
- 하이브 : SYSTEM
- 관련 하이브 파일 : system, system.LOG, system.SAV
- 해당 레지스트리 키 : HKEY_LOCAL_MACHINE/SYSTEM, HKEY_CURRENT_CONFIG
⑥ MEMORY
- 위치 : 휘발성 메모리(VOLATILE HIVE)
- 하이브 : 없음
- 관련 하이브 파일 : 없음
- 해당 레지스트리 키 : HKLM\Hardware, HKLM\SYSTEM\Clone
⑦ SID
- 위치 :
XP : C:\Documents and Settings\[사용자명]
7 : C:\Users\[사용자명]
- 하이브 : SID
- 관련 하이브 파일 : NTUSER.DAT, NTUSER.DAT.LOG
- 해당 레지스트리 키 : HKEY_CURRENT_USER
HKEY_USER (현재 로그온된 사용자 보안 식별자)
⑧ SID_CLASSES
- 위치 : C:\Documents and Settings\[사용자명]\Local Settings\
Application Data\Microsoft\Windows
- 하이브 : SID_Classes
- 관련 하이브 파일 : Usrclasses.dat
- 해당 레지스트리 키 : HKEY_CLASSES_ROOT 하위 데이터의 일부
⑨ 기타
- 위치 : C:\WINDOWS\system32\config
- 하이브 : 없음
- 관련 하이브 파일 : Userdiff, Userdiff.LOG, System.ALT
- 해당 레지스트리 키 : 없음
※ Userdiff, Userdiff.LOG 파일은 Windows XP / 2003 에만 존재
※ System.alt는 Windows 2000에만 존재
- Windows 2000 '마지막으로 성공한 구성'으로 시스템 복원할 때 사용되며
Windows XP, 2003은 '마지막으로 성공한 구성'이 HKEY_LOCAL_MACHINE/SYSTEM/
ControlSet***(001,002등의 숫자) 키에서 가장 최근에 부팅 성곤한 정보를 담고
있는 키를 읽기 때문에 System.alt 파일이 없음
3. 레지스트리 최상위 루트 키
- 레지스트리의 최상위 루트 키(Hive Key)는 HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG로 구성
◎ HKEY_CURRENT_USER(HKCU)
▷ 현재 로그온 된 사용자에 관련된 정보를 저장
(해상도, 테마, 윈도우 시작 시 자동 실행되는 프로그램 등)
▷ HKEY_USERS의 하위 키 중에서 현재 로그온 된 사용자에 해당하는 항목에 대한
단축경로
- Console: cmd.exe 실행창의 설정
- AppEvents: 제어판의 [사운드 및 오디오 장치 등록정보]
- Control Panel: 기타 제어판의 항목들
- Network: 네트워크 드라이브 연결 정보
- Printers: 프린터 연결 정보
- Software: 설치된 프로그램 정보-현재 사용자에 관련된 정보만
- System: 운영체제(윈도우)에 대한 정보-현재 사용자와 관련된 정보만
◎ HKEY_USERS(HKU)
- 시스템에 있는 모든 사용자와 그룹의 계정에 관련된 정보를 저장
◎ HKEY_CLASSES_ROOT
- 확장자에 관련된 정보와 연결 프로그램 정보(파일 연관성과 COM객체 등록 정보)
- HKEY_LOCAL_MACHINE\SOFTWARE\Classes항목과 HKEY_USERS\[SID]\Classes 항목에 대한 단축 경로
예) HKEY_CLASSES_ROOT\.avi\(기본값) Value의 Data가 avifile이므로
HKEY_CLASSES_ROOT\AVIFile\shell\open\command 키의 기본값에 실행파일이 등록
※ COM(Component Object Model)
- 다양한 언어로 만들어진 소프트웨어 컴포넌트들이 자신의 기능을 다른 소프트웨어와 공유하고 통합될 수 있도록 하는 이진 코드 레벨에서의 표준과 서비스를 총칭하는 말
◎ HKEY_CURRENT_CONFIG
▷ 현재 부팅된 윈도우가 사용하고 있는 하드웨어 프로필(Hardware Profiles)
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware
Profiles\Current 항목에 대한 단축 경로
◎ HKEY_LOCAL_MACHINE
▷ 시스템에 설치된 소프트웨어와 하드웨어에 대한 정보, 운영체제에 관련된
설정, 서비스 및 보안 관련 설정 등의 방대한 정보를 저장
- HARDWARE : 부팅 시 감지된 하드웨어 목록과 드라이버 정보
- SAM(Security Account Manager) : 사용자/그룹 계정에 대한 관리
- SECURITY : 보안 정책(주로 로컬 보안 정책)
- SOFTWARE : 윈도우에 설치된 응용프로그램에 대한 정보
- SYSTEM : 부팅 시 및 부팅 후에도 필요한 드라이버, 서비스, OS 설정 값
4. 레지스트리 형식
- MS의 regedit.exe를 이용하여 레지스트리 분석 가능
◎ KEY
- Hive Key(=Root Key)
- Sub Key
◎ Value
- Name/Type/Data
- Name이 없으면 (기본값) 이라고 표시
- Data가 없으면 (값 설정 안 됨) 이라고 표시
◎ Type( of Value)
값 |
데이터 형식 |
설명 |
0x00 |
REG_NONE |
데이터 형식 없음(종류 없음) |
0x01 |
REG_SZ |
고정 길이 텍스트 문자열(UTF-16 문자열) |
0x02 |
REG_EXPAND_SZ |
가변 길이 데이터 문자열 (시스템 경로로 사용하는 UTF-16 문자열) |
0x03 |
REG_BINARY |
이진 데이터 |
0x04 |
REG_DWORD |
데이터를 32비트(4바이트) 정수로 표현 |
0x04 |
REG_DWORD_LITTLE_ENDIAN |
32비트 정수로 표현(리틀 앤디안 방식) |
0x05 |
REG_DWORD_BIG_ENDIAN |
32비트 정수로 표현(빅 앤디안 방식) |
0x06 |
REG_LINK |
심볼릭 링크 유니코드 문자열 |
0x07 |
REG_MULTI_SZ |
공백, 콤마, 또는 다른 구분자로 분리되는 다중 문자열 (NULL문자로 끝나는 유니코드) |
0x08 |
REG_RESOURCE_LIST |
리소스 목록을 저장하기 위해 설계된 일련의 중첩된 배열 (하드웨어 리소스 설명) |
0x09 |
REG_FULL_RESOURCE_DESCRIPTOR |
물리적인 하드웨어 장치에서 사용하는 리소스 목록을 저장하기 위해 설계된 일련의 중첩된 배열 (하드웨어 리소스 설명) |
0x0A |
REG_RESOURCE_REQUIREMENT_LIST |
가능한 하드웨어 리소스의 장치 드라이버 목록을 저장하기 위해 설계된 일련의 중첩된 배열 (리소스 요구 사항) |
0x0B |
REG_QWORD |
데이터를 64비트(8바이트) 정수로 표현 |
0x0B |
REG_QWORD_LITTLE_ENDIAN |
64비트 정수로 표현(리틀 앤디안 방식) |