Search
Duplicate

윈도우 디바이스 드라이버 환경 세팅 및 디버깅

취약점 분석 트랙 박상준

환경세팅법 1 → virtual box이용

→ 토글
virtual box 이용한 세팅

환경세팅 법 2 → vmware && virtual VD

→ 클릭 (Toggle)
virtual VD이용한 세팅

디버깅

1. !process 0 1 notepad.exe -> 실행중인 notepad.exe들 중에 하나를 골라 EPROCESS구조체 나옴. -> !process 0 0 notepad.exe -> 실행중인 notepad.exe모두 출력 2. 위에서 PROCESSS 다음 주소를 기억하고 .process [주소] --> THREAD주소 나옴 6. !thread [5번에서 나온 쓰레드 주소 하나 잡고] -> 쓰레드 정보 출력 7. .thread [쓰레드 주소]로 쓰레드로 컨텍스트 바꿈 8. !heap -m으로 힙을 봄. 9. s - u [시작주소] [끝주소] [찾을 문자열] 10. .formats [찾은 문자열의 주소] -> 가상주소를 비트단위로 볼 수 있음 11. !process [notepad.exe주소] -> Dir Base볼 수 있음. 12. !dq [Qword로 hexdump할 주소] 13. !db [byte단위로 hexdump할 주소] 14. fp [주소] L1 'M' -> [주소]'M'으로 바꿈. L1은 바꿀 사이즈같음. ## offset빼고 다른거에는 *8을 해줘야함 ## ## 0x1000단위로 버림줘야함 ##
JavaScript
복사
.formats 결과 PML4 → PDP→Dir → Table로 나누기
“Worst of Worst” 문자열 주소 찾기
“Worst of the Worst”→ “Borst of the Worst”로 바꿈

페이징 정리

PML4 → Page Directory Pointer → Page Directory → Page Table
가상주소 → 물리주소 : 16 bits(sign ext) - 9bits * 4 - 12bits(offset)
각 엔트리는 512개, 그럼 PTE Size가 4K이니까, PTE는 4K * 512정도 표현할 수 있다.
PAGE DIrectory Table Entry하나가 표현할 수 있는 가상주소 -> Page Directory Table entry하나가 가질 수 있는 가상주소 * 512 -> PTE Table이 가질 수 있는 가상주소 * 512 -> 4K * 512 (PTE Table이 가질 수 있는 가상주소 ) * 512 -> 2MB * 512

힘들었던 점

처음에 램을 32GB 로 설정했다가 PPT랑 달라서 이유를 계속 찾아다녔다.
PPT에서는 다음 단계의 메모리 주소를 4byte만 사용해서 1c5ed2867 중에 1c 를 제외하고 Tracing했었다…
페이지가 0x1000단위이기 때문에 하위 1.5바이트는 0x1000단위로 떨어져야 하기 때문에 다음 단계는 1c5ed2000 으로 계산해야함.

참고자료 및 문헌