본문 바로가기

windows34

Windows Defender 드라이버 분석 https://www.n4r1b.com/tags/wdfilter/ Wdfilter :: Up is Down and Black is White — n4r1b www.n4r1b.com 2020. 8. 13.
Windbg 커널디버깅 설정하기 (Network 디버깅) Windbg 커널디버깅 KDNET 설정하기 (Network 디버깅) 커널 드라이버를 개발하면서 언젠가?는 마주치게 되는 커널디버깅. 과거 물리적인 디버깅 대상 PC의 시리얼포트를 통해 개발 PC와 연결하여 커널디버깅을 했었지만 요새는 가상머신의 시리얼포트에 named 파이프를 설정하여 디버깅을 한다. 하지만 이 방식에는 큰 문제가 있는데 바로 속도의 문제이다. 과거 방식인 물리적인 시리얼포트가 그대로 가상머신에 들어왔을 뿐 인터페이스는 어찌됬건 시리얼포트인 것이다. 디버깅을 지원하는 시리얼 포트의 최대 속도는 115200bps(baudrates). 디버깅을 하는데 못할 정도는 아니지만, 로컬에서 유저모드 애플리케이션을 VS로 붙여서 디버깅하는 만큼 속도도 안나올 뿐더러 커널디버깅 특성상 이벤트자체가 많아.. 2020. 7. 27.
UNICODE_STRING 동적할당 하기 / 드라이버개발 UNICODE_STRING 동적할당 하기 / 드라이버개발 드라이버 개발을 할때 주로 문자열은 UNICODE_STRING이라는 자료구조를 사용하게 된다. 하지만 익숙치 않은 구조때문인지 드라이버 개발 입문시 어려움을 겪는 부분이기도하다. 우선 UNICODE_STRING 구조체를 보겠다. typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; 유저 모드 프로그램 개발시 char, wchar와 같이 단순 배열 형태가 아닌 것을 볼 수 있다. 첫번째 필드 Length는 문자열 버퍼의 길이를 바이트 단위로 나타낸다. 조심해야 한다. 문자의 갯수가 아니라 버.. 2020. 7. 24.
Windows 드라이버 커널모드에서 파일 해시 구하기 일반적으로 보안 프로그램에 쓰이는 디바이스드라이버들은 파일이벤트, 레지스트리, 프로세스이벤트 등을 탐지하여 자신이 가지고 있는 정책에 따라 차단을 하거나 로깅을 합니다. 특히 특정 파일이나 프로그램을 찾기위해서 파일 해시를 구하는 경우가 많습니다. 파일 해시를 구하기 위해서는 암호화 라이브라리 등을 사용하여 유저영역에서 구하는 경우가 일반적입니다. 하지만 이벤트를 유저모드 애플리케이션에 통지하고 해시를 구하고, 다시 차단하는 로직을 수행하면서 컨텍스트 스위칭이 잦아지는 문제점이 있습니다. 파일 해시를 커널모드에서 구해서 필터링이 가능할까? 이러한 의문점에 검색을 해보니 많은 내용이 검색되지는 않았지만 단서가 될만한 내용을 다음 사이트에서 찾을 수 있었습니다. http://www.rohitab.com/di.. 2020. 7. 23.
윈도우 네트워킹 아키텍처 (Windows Networking Architecture) 마이크로소프트 윈도우는 네트워킹을 고려하여 설계됐으며 I/O시스템과 윈도우 API를 통합한 광범위한 네트워킹 지원을 포함하고 있다. 네트워킹 소프트웨어의 기본적인 4가지 유형은 서비스, API, 프로토콜, 네트워크 어뎁터 드라이버이며 순서대로 네트워크 스택에서 계층을 이루고 있다. 각 계층은 잘 정의된 인터페이스를 갖고 있어 서드파티 업체는 자체적으로 이것을 이용해 네트워킹 기능을 확장 할 수 있다. 일부 구성요소가 여러 계층에 걸쳐 있기 때문에 OSI 계층과 네트워킹 구성요소가 정확히 대응되지 않는다. 네트워킹 API 네트워킹 API는 애플리케이션이 네트워크를 통해 통신하기 위한 프로토콜의 독립적인 방법을 제공. 유저모드나 유저, 커널 모드 양쪽에서 구현될 수 있다. 트랜스포트 드라이버 인터페이스(TD.. 2020. 6. 24.
Python2.x 에서 error: Microsoft Visual C++ 9.0 is required. 윈도우에서 Python 2.7에서 pip모듈을 설치하다보면 컴파일러를 찾지 못해 설치가 안되는 경우가 생긴다. 리눅스는 gcc가 깔려있으면되지만 윈도우에서는 Visual C++컴파일러가 있어야 하는데 버전에 맞는걸 또 찾아줘야 하는 듯 싶다. pip install pycrypto 윈도우 python2에서 pycrypto를 설치하다가 발생한 문제이다. 해결방법: https://www.microsoft.com/en-us/download/details.aspx?id=44266 Visual C++ Compiler for Python 2.7 This package contains the compiler and set of system headers necessary for producing binary wheel.. 2020. 6. 5.
윈도우10 DNS 캐시 초기화 / flushdns DNS서버 설정을 변경했다거나 hosts파일의 내용을 변경하고 나서 dns 캐시를 초기화 해야하는 경우가 있습니다. 이때 윈도우 10에서 DNS 캐시를 초기화 하는 방법을 알아보겠습니다. 1. 시작 -> CMD를 관리자모드로 실행합니다. 2. ipconfig /flushdns를 입력합니다. 이렇게 DNS 캐시를 초기화 한 후 이미 열렸던 프로그램에서 반영이 안될 수도 있으니 웹브라우저나 쓰던 프로그램은 재시작을 해주는게 좋습니다. 2020. 6. 4.
DirextX 11 텍스처 로드 D3DX11CreateShaderResourceViewFromFile 대체하기 (DirectTex) D3DX11CreateShaderResourceViewFromFile 요새 DirectX 11튜토리얼을 www.braynzarsoft.net/ 보면서 따라하고 있습니다. 오늘 공부한 튜토리얼은 텍스처입니다. 저는 Visual Studio 2019에서 Windows 10 SDK만 가지고 DirectX를 공부하고 있어 기존에 DirectX SDK에서 쓰이는 라이브러리를 쓰지 않아 약간 차이점이 존재했습니다.(Windows 8부터 DirectX SDK가 Windows SDK에 포함됨) 튜토리얼은 Windows 8 이전의 개발환경 기준으로 설명되어 있기 때문에 약간 변형이 필요했는데 이번에 텍스처 튜토리얼에서 텍스처 파일을 쉐이더리소스로 불러오는 함수 D3DX11CreateShaderResourceViewFro.. 2020. 5. 10.
WFP (Windows Filtering Platform) 이란 ? WFP (Windows Filtering Platform) 과거 Windows에서 네트워크 패킷을 모니터링을 하기 위해서는 TDI(Transport Driver Interface), NDIS 필터, LSP등을 이용했어야 했습니다. 하지만 Windows Vista, server 2008 버전 이후부터 필터 훅 드라이버나 방화벽 훅 등은 사용할 수 없게 되었으며 이러한 기술들은 WFP로 대체 하게 되었습니다. 그렇다면 WFP는 무엇일까? WFP는 Windows Filtering Platform의 약자로 네트워크 필터링 애플리케이션을 만드는데 필요한 API와 서비스를 제공하는 플랫폼을 말합니다. WFP는 개발자에게 Windows의 네트워크 스택에서 발생하는 네트워크 패킷 처리를 할 수 있도록 도와주며 각 계층.. 2020. 5. 7.