Category Archives: Windows Reverse 2nd

핸들을 통한 파일 사이즈 확인

lkd> !handle …………………………. …………………………. …………………………. 0114: Object: 85324a48 GrantedAccess: 00120089 Entry: e7afb228 Object: 85324a48 Type: (8a527560) File ObjectHeader: 85324a30 (old version) HandleCount: 1 PointerCount: 2 Directory Object: 00000000 Name: \symbols.pub\ntkrpamp.pdb\D8743252F83B4F59985D6E19F33BFCAF1\ntkrpamp.pdb {HarddiskVolume1}   0118: Object: 85933148 GrantedAccess: 00100003 Entry: e7afb230 Object: 85933148 Type: (8a53c490) Event ObjectHeader: 85933130 (old version) HandleCount: 1 PointerCount: 1   lkd> !fileobj

Read More

windbg를 이용한 poll 추척 – Gflags

이 도구는 Windbg를 설치하면 함께 설치되는 도구로서, 커널 디버깅 시 유용한 기능을 제공한다. 대표적으로 윈도우에서 발생하는 페이지 풀 오류를 찾기 위해 먼저 Enable poll tagging를 활성화 하여, 힙 태그를 통해 오류시 사용된 힙의 태그을 확인할 수 있어, 장애 해결에 도움을 준다. HeapMon을 사용할 때에도 Gflags를 이용하여 활성화 하여야 한다. [그림] Heap, Pool 관련 문제를 추적하기

Read More

메모리의 실체, 공포의 파란 화면

윈도우 구조는 크게 유저모드와 커널모드로 메모리 영역이 나누어져 있다. 여기에서는 커널 메모리 영역과 윈도우에서 메모리를 관리하는 방식에 대해 정리해 보도록 하겠다. 메모리 부분은 역분석에서 주요 분석 부분이므로, 이 구조 이해도 필요하다 할 수 있다. 윈도우는 실제 메모리보다 많은 공간을 사용할 수 있도록 가상 메모리 공간을 만들어 사용한다. 가상 메모리는 메모리상의 일부 영역을 디스크로 페이징시켜 메모리

Read More

레지스터와 어셈블리 그리고 스택

가장 먼저 공부해야할 부분을 CPU로 잡았다. 이유는 윈도우 구조 분석에 있어 대다수 코드가 CPU가 처리하는 과정을 보는 과정이기 때문이다. CPU 처리 과정의 이해는 윈도우 구조를 이해하는데 매우 중요하다. 윈도우라는 운영체제는 사용자와 하드웨어에서 중간 다리 역활을 해주는 장치라 할 수 있다. 예로 사용자가 엑셀을 이용해서 문서를 만들때 입력 장치인 키보드를 사용할 수 있고 모니터에 엑셀 화면을

Read More

1장 시작하기전 준비할 것들

1장 시작하기전 준비할 것들 우리는 앞으로 다양한 실습을 진행할 예정이다. 이를 원활히 진행하고 싶다면 먼저 실습에 필요한 환경을 구축해 놓아야한다. 1부를 통해 윈도우 구조을 배우기 전에 알아야하는 기초 지식들과 실습 환경을 만들어보자. 저자가 처음 리버싱을 배울 때 Windbg(Windows Debugging Tool)의 커널 디버깅 연결하는데도 많은 시간을 소비하였다. 지금은 몇분도 않걸리지만, 그때는 아무것도 알지 못하고, 따라하라는데로만 했다가

Read More

윈도우 버전과 커널 변화

윈도우 버전과 커널 변화 “요즘 같이 바쁜 시대에 개발할 시간도 없는데 윈도우 구조를 이해하라고? 웃기고 있네~” 이렇게 콧웃음을 칠 수도 있습니다. 여러분, 그럼 여러분이 빨리 하고 싶다고 애기하는 개발에 대해서 애기해 봅시다. 개발이라면 무엇일까요? 사전적의미는 “무엇인가를 보다 쓸모있거나 향상된 상태로 변화시키는 행위”라고 합니다. 그렇다면 IT에서 개발이란 위에서 “만들어~” 라고 지시한 특정한 프로그램이지요. 그렇게 시작된 개발은

Read More

멀티 프로세싱(multiprocessing)

윈도우는 다수의 프로세서가 하나의 메모리 영역과 하드웨어 자원들을 공유해서 사용하는 대칭형 다중처리(Symmetric multiprocessing, 앞으로 SMP라고 표현함)를 지원한다. 현재 대부분의 시스템들이 지원하는 시스템 구조 역시 SMP라 할 수 있다. SMP는 데이터가 어느 위치에 있든 각 프로세서가 동일한 위치를 바라볼 수 있으므로, 작업 스케줄링을 통해서 효율적으로 여러 프로세서를 이용할 수 있게 된다. 윈도우 7과 2008에서는 256개의 논리

Read More