JumpList
본문의 내용은 아래의 블로그 게시글을 내가 보기쉽게 정리한 것이다.
https://whitesnake1004.tistory.com/597
JumpList란?
- 윈도우 7 부터 새롭게 추가된 기능
- 응용프로그램을 사용할때 사용한 로그를 표현해준다.
JumpList가 중요한 이유
- 사용자의 응용프로그램 사용 흔적 및 패턴을 보다 쉽게 파악이 가능
- 최근 접근 문서나 UserAssist 키 등 많은 정보를 포함
- 사용자가 직접 삭제 하지 않는 이상 운영체제 설치 시부터 지속적으로 로그를 저장
- 사용자의 행위 파악에 큰 역할
JumpList의 종류
- Recent : 사용자가 최근 접근한 파일이나 폴더를 의미합니다.
- Frequent : 사용자가 빈번히 접근한 파일이나 폴더를 이야기 합니다.
- Tasks : 응용프로그램에서 지원하는 작업 목록 입니다.
- Pinned : 사용자가 고정 시킨 작업 목록 입니다.
나의 경우 [그림-1]과 같은 점프리스트를 가지고있는데,
Recent 와 Pinned 점프 목록이 있다는 것을 알 수 있다.
※ 작업표시줄에 있는 응용프로그램을 우클릭해보면 확인할 수 있다.
JumpList 구조
점프 파일은 아래의 경로에 저장된다.
Recent 디렉토리로 이동하여 내용을 출력하면 [그림-2]와 같다.
lnk도 있고 DIR도 있는데 DIR에는 AutomaticDestination, CustomDestinations가 있다. [그림-3]
AutomaticDestinations [그림-4]
- 운영체제가 자동으로 남기는 항목
- 최근 사용한 목록(Resent)이나 사용자가 직접 고정시킨 항목(Pinned)이 위치
CustomDestinations [그림-5]
- 자주 사용되는 목록(Frequent)나 작업 목록(Tasks)이 위치
.automaticDestinations-ms
.customDestinations-ms
앞에 있는 문자열은 총 16글자로 AppID라는 고유한 문자열이다.
Jump List App ID : https://kali-km.tistory.com/entry/Jump-List-App-ID
위의 링크에서 AppID를 검색하여 어떤 응용프로그램인지 확인할 수 있다. [그림-6]
(해당 사이트에 없는 AppID도 있다)
점프 목록 파일은 OLE Compound 파일 구조를 사용하고
점프 목록 각 아이템은 OLE Stream(바로가기) 로 저장하게 된다.
OLE Stream 파일은 SSView(Structured Storage Viewer) 툴을 이용해서 Stream 별로 확인 가능하다. [그림-7]
총 스트림 개수는 61개이고, 16진수 형식으로 숫자가 매겨진다.
점프 목록을 공부하기 위해서는 점프 목록 파일구조의 헤더를 차지하는 OLE 파일구조를 공부 해야하며,
lnk 파일의 연속이기 때문에 LNK 관련 파일 구조도 기본적으로 알고 있어야 한다.
OLE File Struecture 관련 글 : https://whitesnake1004.tistory.com/584
LNK File Struecture 관련 글 : https://whitesnake1004.tistory.com/591
기본적으로 점프 파일 구조는 [그림-8]과 같은 구조를 띄고 있다.
LNK File Structure는 여러개가 있고,
DestList File Structure는 1개만 존재한다.
완벽히는 아니지만 LNK File에 대응하는 DestList File이 있기 때문에
DestList File Structure의 크기는 다른 LNK File 보다 크게 출력된다.
데이터를 저장시에 시스템 오류가 있었거나 쓰기 동작중 예기치 못하게 중지되면
LNK File은 있지만 DestList File이 없거나 그 반대의 상황이 발생한다.
JumpListsView 툴을 이용하면 [그림-9]처럼 automaticDestinations-ms 파일의 데이터를 쉽게 확인 가능하다.