1. Overview


본 게시글은 Windows 10 Pro (버전 1809) x64 에서 실행되는 Powershell을 대상으로 기록하였습니다. Windows OS 의 버전이나 사용자의 세팅 환경에 따라 다를 수 있음을 알려드립니다.

 

 

 

1.1 문제의 발견

 

서버의 원격 개발을 위해 VScode의 ssh 연결을 위해 {시작 - 실행}을 통해 Powershell을 입력하여 호출하였다.

[그림 1] 실행을 통한 powershell 호출

 

평소 Powershell을 "CMD"와 유사하게 설정해놓고 사용하고 있다.

[그림 2] CMD와 유사한 Powershell 세팅

 

Windows에서는 {시작 - 실행}으로 Powershell을 실행하는 방법 이외에 다른 방법으로 호출할 수 있도록 지원한다. 

설정(Windows Shortcut : Winkey + i)에서 {개인설정 - 작업표시줄}의 아래 그림에 표시된 토글 버튼의 활성화 여부에 따라 파워유저 메뉴(Windows Shortcut : Winkey + x or 시작버튼 우클릭) 에서 Powershell을 호출할 수 있다.

[그림 3] 개인설정 - 작업 표시줄의 설정

 

해당 토글의 활성화를 통해 파워유저 메뉴에서 Powershell을 실행할 수 있다.

[그림 4] 파워유저 메뉴의 Powershell

 

파워유저 메뉴를 통해 실행한 Powershell과 실행을 통해 실행한 Powershell이 다른 것을 확인할 수 있었다.

같은 Powershell인데 하나는 설정이 적용되어 있고 하나는 기본 설정으로 되어 있는 것을 확인하였다.

[그림 5] 서로 상이한 powershell

 

 

 

2. Body


2.1 파워유저 메뉴의 Path

 

앞서 등장한 {Winkey + i}를 통해 실행할 수 있는 파워유저 메뉴는 아래의 경로에서 관리된다.

C:\Users\[USERNAME]\AppData\Local\Microsoft\Windows\WinX

 

 

{시작 - 실행}을 통해 호출하는 명령은 다음과 같다.

%localappdata%\Microsoft\windows\winX

 

 

파워유저 메뉴의 각 콘텐츠를 관리하는 레지스트리는 다음과 같다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellCompatibility\InboxApp

 

 

해당 경로를 통해 확인한 결과 파워유저 메뉴는 "Group1~3"으로 관리되고 있었다[1].

[그림 6] 파워유저 메뉴와 Group1~3 폴더

 

 

Group1~3 폴더 내부에는 바로가기 파일들이 존재하며 파워유저를 통해 실행하는 각 기능들은 바로가기를 통해 호출되고 있음을 알 수 있다.

[그림 7] Group1과 Group2의 파워유저 메뉴

 

 

[그림 8] Group3과 파워유저 메뉴

 

 

 

2.2 서로 다른 Powershell 실행의 비교

 

{시작 - 실행}을 통한 Powershell의 실행은 다음 경로의 "powershell.exe"를 실행한다.

C:\Windows\System32\WindowsPowerShell\v1.0

 

파워유저 메뉴를 통한 Powershell의 실행은 다음 경로의 "powershell.exe"의 바로가기를 통해 실행한다.

C:\Users\[UserName]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell

 

이는 시작에서 검색하여 실행한 경우와 동일한 경로이다.

[그림 9] 시작을 통해 검색한 Powershell

 

 

"C:\Users\[UserName]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" 경로의 Powershell의 속성을 확인해보면 다음 그림과 같다.

[그림 10] Start menu의 Powershell 속성

 

 

해당 start menu의 Powershell은 "C:\Windows\System32\WindowsPowerShell\v1.0" 경로의 Powershell이다.

그렇다면, 동일 파일임에도 불구하고 다른 이유는 무엇일까?

 

그 이유는 바로가기의 속성에서 찾을 수 있었다.

바로가기의 속성에서도 색, 글꼴등을 설정할 수 있다.

[그림 11] 바로가기 파일의 속성창

 

 

Windows 10 OS가 설치될 때 시작 프로그램 경로에 Powershell의 바로가기가 생성되고, 해당 바로가기는 설치 당시의 Powershell의 디폴트 세팅으로 생성되었기 때문에 기존 디폴트 세팅으로 되어 있음을 추측할 수 있다.

 

 

그렇다면, 변경된 Powershell의 속성이 저장된 powershell을 바로가기로 만들면 어떤 결과를 출력할까?

[그림 12] 속성이 변경된 Powershell의 바로가기 결과

 

 

예상대로 기존에 설정된 파일의 바로가기를 생성하면 해당 파일의 속성이 따라오는것을 확인할 수 있다. (폰트는 아닌듯 하다.)

 

 

 

3. Additional Information


3.1 파워유저 메뉴의 Powershell이 Start Menu에서 실행되는것은 어떻게 확인할 수 있을까?

 

단순하게 Start Menu에 있는 powershell의 파일명을 살짝만 변경하면 된다. "powershell2"로 파일명을 변경한 후 파워유저 메뉴의 powershell을 실행해보았다.

 

[그림 13] 파일명 변경 후 파워유저 메뉴를 통해 실행한 powershell

 

 

파일명을 변경한 후에도 시작을 통한 검색에서는 변경된 파일명으로 정상적으로 검색되며 실행 또한 정상적이다.

[그림 14] 파일명 변경 후 시작을 통해 검색한 powershell

 

 

또한 Start Menu에서 Powershell가 여러개 존재할 경우에 하나만 검색 결과로 표출된다. 숫자의 경우 낮은 숫자가 표출된다.

해당 폴더에는 powershell2와 powershell3이 존재했지만 powershell3은 검색결과에 표시되지 않았다.

[그림 15] powershell3 검색 결과 확인

 

 

[그림 16] Start Menu의 powershell2와 powershell3

 

 

 

3.2 파워유저 메뉴 활용

 

파워유저 메뉴를 편리하게 활용하기 위한 도구가 제공된다. "win+x menu editor" 도구가 있으며 관심이 있다면 찾아보면 좋을것 같다.

 

이외에도 파워유저 메뉴에 원하는 프로그램을 추가할 수 있는 다양한 방법이 있으니 관심이 있다면 참고문헌을 통해 찾아보는것을 추천한다.

 

 

 

4. Conclusion


{시작 - 실행}을 통해 실행한 Powershell과 파워유저 메뉴를 통해 실행한 Powershell이 설정이 다른것을 확인하고 같은 Powershell 사이에 어떤 차이가 있는지 확인하였다.

 

결론은 같은 Powershell이지만 바로가기의 속성에서의 사용자 변경사항 적용 유무의 차이가 있었다. 

 

큰 통찰력을 주는 결론은 아니지만 파워유저 메뉴에 대해 알아볼 수 있는 좋은 기회였다고 생각한다.

 

 

 

5. References


[1] "https://www.interfacett.com/blogs/modify-winx-menu-windows-10"

[2] "https://www.htguk.com/get-back-control-panel-winx-menu-instead-settings-windows-10-creators-update-customize-way-really/"

본 포스팅은 MBR 과 EBR에 관해 간략히 서술하며 EBR의 주소 찾아가는 방법에 대해 주로 서술할 것이다.




1. MBR



MBR은 저장 매체 (물리 디스크)의 첫 번째 섹터에 위치하며 512Byte의 크기를 갖는다. 이는 446 Byte의 부트 코드와 64 Byte 의 파티션 테이블, 2 Byte 의 시그니처로 이를 합하면 512 Byte (0x200)의 크기이다.


우리가 주목할 부분은 64 Byte의 파티션 테이블이다. 각 파티션마다 16 Byte로 구성되어 있으며 4개까지의 파티션을 구성할 수 있고 그 이상은 EBR로 관리한다.


지인으로부터 제공받은 이미지 파일을 분석해보겠다. 사용한 도구는 HxD를 이용하였다. 먼저 파일을 불러올 때  드래그 앤 드롭으로 불러오는 것과 기타설정 -> 디스크 이미지 열기와의 차이점이 있다.



(디스크 이미지 열기를 통해 파일을 오픈하면 그림과 같이 섹터를 표시해주기 때문에 주소를 계산하기 더 편리하다.)



위에도 언급했듯 디스크의 첫번째 섹터인 0번섹터에 512 Byte를 확인해보았다.  쉽게 확인하는 방법은 마지막 2바이트를 확인해보면 MBR의 시그니처인 "0xAA55"를 확인할 수 있다.



본 포스팅에서는 부트코드 및 일부 파티션 테이블에 대한 설명은 생략하고 EBR 부분에 집중하겠다.



파티션 테이블에서 EBR을 나타내는 부분을 확인하고 (파란색 강조 부분) 그 중 LBA 시작주소 (붉은 박스)를 확인할 수 있다. LBA 시작주소는 실제 파티션이 시작되는 섹터의 위치를 나타내는 것이다. 리틀 엔디언으로 "0x01E080"이다. EBR의 주소 계산은 기준값이 중요하기 때문에 이 기준값을 잘 참조해야한다.




1.1  주소의 계산


EBR의 실제 파티션 섹터가 위치한 주소는 "0x01E080"이다. 그러나 해당 주소로 바로 이동한다고 되는 것은 아니다.

섹터의 크기만큼을 곱해줘야 우리가 원하는 결과가 출력될 것이다. 16진수 0x01E080은 10진수로 123,008이다. 여기에 섹터의 크기 512를 곱한다. 그리고 그 값의 16진수로 변환하면 EBR의 주소이다.


계산한 결과는 "0x3C10000"이다. 확인해보겠다. HxD에서 Ctrl + G 단축키를 이용하면 오프셋 이동을 할 수 있다.


쉽게 확인하는 방법은 아래 시그니처부분이 "0xAA55" 인것을 확인하면 된다. 아래 그림에서 다음 EBR의 LBA부분을 미리 표시해 두었다. 다음을 찾아가기 전에 조금 더 쉽게 계산하는 방법을 서술하겠다.




앞에서는 [LBA 시작주소의 10진수 * 512 = 결과값 (16진수 변환)] 으로 찾았다. 그러나 HxD로 이미지를 로드할 때 "디스크 이미지 열기"로 오픈한 이유가 여기에 있다. 바로 섹터값을 표시해주는 것인데, 하드 디스크 섹터의 크기인 512 Byte를 설정하고 오픈하면 512 바이트를 곱해줄 필요가 없다. 바로 확인해보겠다.


먼저 첫번째 EBR의 LBA 값은 16진수 0x01E080은 10진수로 123,008이다.




HxD의 기능중에 섹터값으로 찾아가는 방법이 있다. 이를 이용하면 LBA 값의 10진수 입력으로 바로 찾아 갈 수 있다.



주소를 찾아가는 2가지 방법을 정리하고 넘어가겠다.




1. [LBA 시작주소의 10진수 * 512 = 결과값 (16진수 변환)]

2. [LBA 시작주소의 10진수 -> 섹터값으로 주소이동]



첫 번째 EBR의 파티션 테이블에서 알려주는 LBA 시작주소는 "0xA080"이다. 그러나 두번째 EBR에서는 바로 찾아간다고 되는게 아니다. 바로 앞에서 언급했던 "기준값"을 더해주어야 한다.  이유는 EBR의 주소체계구조를 참고하길 바란다. 기준값 "0x01E080"+"0xA080"의 결과값이 다음 EBR의 영역이 될 것이다.



결과값의 10진수인 164,096 섹터로 찾아간 결과에 "0xAA55" 시그니처를 확인할 수 있다. 아래 사진에는 다음 EBR 주소의 LBA 값을 미리 표시해두었다. 바로 찾아가보겠다. "0x01E080"+"0x014100" = "0x32180"



위의 계산법대로 계산하여 다음 EBR에 도착하였다. EBR의 부트코드 영역은 역할이 없기 때문에 0 또는 FF로 채워져 있을 수 있다. 파티션 테이블에서 나타내는 다음 EBR의 LBA 값은 0으로 세팅되어 있다. 이로써 3개의 EBR을 모두 찾은 것을 확인할 수 있다.






2. 또 다른 방법



여기서는 HxD를 이용하여 계산하면서 찾았지만 다른 방법도 많을 것이라고 생각한다. 대표적으로 "010 Editor"의 "Drive.bt" 템플릿을 이용하면 잘 분석해준다.





3. 결론



본 포스팅에서는 EBR의 주소계산법에 초점을 맞추어 서술하였다. 이론적으로 공부할 때도 많이 헷갈렸고 직접 찾아가는 동안에도 상세히 설명된 게시물이 없어서 어려웠다. 그러나 한번만 직접 해보면 이해하기 쉬운것 같다. 이상으로 MBR & EBR 찾기 포스팅을 마치겠다.





4. 참고문헌



1. NTFS File System (2) MBR & EBR, http://kali-km.tistory.com/entry/NTFS-File-System-2, 2015.12.29 01:36

+ Recent posts