문제 발생
악성코드를 분석하던 중, KUSER_SHARED_DATA.NtBuildNumber를 참조하여 동작 환경의 빌드 넘버를 비교해 분기를 진행하는 루틴에 대한 분석 시, IDA Pro에서 해당 구조체의 멤버를 해석하지 못해 MEMORY[0x7FFE0260]과 같이 표현되는 경우가 발생하였다.


KUSER_SHARED_DATA 구조체 매핑 진행
1. Type Libaray 로드
Views → Open subviews → Type Libraries(Shift + F11)에서 우클릭 후, Load type library...(Ins)클릭

ntddk 검색 후, 동작 환경에 맞게 선택


2. 구조체 생성
Views → Open subviews → Structres(Shift + F9)에서 우클릭 후, Add struct type...(Ins)클릭

Struct name에 KUSER_SHARED_DATA 입력 진행


3. 세그먼트 생성 및 수정
3-1. KUSER_SHARED_DATA 세그먼트 생성
Edit - Segments - Create segment... 클릭 후, Create a new segment에서 아래와 같이 KUSER_SHARED_DATA 영역에 대한 정보 입력 진행


3-2. KUSER_SHARED_DATA 세그먼트 수정
생성한 KUSER_SHARED_DATA 세그먼트의 시작 주소인 0x7FFE0000으로 이동 후, Edit → Struct var...(Alt + Q) 클릭

Choose a structure type에서 KUSER_SHARED_DATA 클릭

4. 디컴파일 진행 및 변수명 수정
View → Open subviews → Generate pseudocode(F5)를 통해 수도코도를 재생성하면 다음과 같이 구조체로 인식이 되었지만, 이름 설정이 되지 않았음을 알 수 있다. 따라서 Rename global item...(N)을 통해 이름 변경을 해주면 된다.
다만, 이미 세그먼트의 이름을 KUSER_SHARED_DATA으로 생성했기에, 중복된 이름으로 설정이 불가능하여 언더바를 추가하였다.


5. 매핑 완료
