Windows/Kernel (15) 썸네일형 리스트형 프로세스 고유ID(ProcGuid)/부록: Kernel 모드에서 md5 해시 구하기. 하나의 실행 파일은 다수의 프로세스로 실행 될 수 있습니다. 그리고 고유한 값인 ProcessID를 가집니다. ProcessID는 동시에 실행 중인 프로세스간 구분이 가능한 고유값이라 볼 수 있습니다. 하지만 종료된 프로세스의 ProcessID는 이 후 실행되는 또 다른 프로세스에 의해 재 사용될 수 있는 값이라 언제나 고유한 값은 아닙니다. 제가 원하는 프로세스의 고유값 ProcGuid는 동일 장비, 동일 시각, 동일 파일이 실행된 프로세스라면 늘 같은 값이고 서로 다른 프로세스간엔 서로 다른 고유한 값을 보장하는 값입니다. 수많은 사용자의 수 많은 장비에서 수 많은 프로세스가 매번 실행될 텐데 각 프로세스마다 고유값인 ProcGuid를 주고 싶습니다. ProcGuid로 누구의 PC에서 무슨 파일이 언.. Kernel Callback Functions https://www.n4r1b.com/posts/2020/03/dissecting-the-windows-defender-driver-wdfilter-part-3/ Dissecting the Windows Defender Driver - WdFilter (Part 3) :: Up is Down and Black is White — n4r1b Welcome back to Dissecting the Windows Defender Driver, in the previous part we saw how WdFilter handles the loading of images in memory through an ImageLoad callback routine, we also saw how new threads ar.. anti dll injection dll injection의 정황: 스레드 생성을 한 프로세스ID != 스레드가 생성이 된 프로세스ID thread의 StartAddress 가 LoadLibraryA/LoadLibraryW 참고 링크: Dissecting the Windows Defender Driver - WdFilter (Part 3) :: Up is Down and Black is White — n4r1b Welcome back to Dissecting the Windows Defender Driver, in the previous part we saw how WdFilter handles the loading of images in memory through an ImageLoad callback routine, we also s.. 드라이버 로드 후 파일 삭제하기. 이렇게 되면 드라이버의 흔적이 남지 않겠네요? 로드되는 모듈 감시하기 -- PsSetLoadImageNotifyRoutine 특정 프로세스 및 드라이버를 보면 메모리상에만 존재하고 하드디스크에 존재하지 않는 것을 간혹 볼 수 있... blog.naver.com kernel 모드에서 PE 파일의 코드사인 여부 확인 드라이버에서 프로세스 생성, 모듈 로드 통지를 받은 후 이걸 앱으로 올려 앱에서 해당 파일의 코드사인 여부를 판단하면 되는데, 전 이 모든 것을 커널 드라이버로 끝내고 싶단 말이에요. 그래서 방법이 없나??? 라고 고민 하던 중 재미있는 글을 읽었습니다. MSDN ZwQueryInformationProcess 에서 PS_PROTECTION 항목입니다. ProcessProtectionInformation 을 주고 콜 하면 PS_PROTECTION 구조체를 얻을 수 있는데 이 구조체 안에 흥미진진한 데이터가 있습니다. typedef struct _PS_PROTECTION { union { UCHAR Level; struct { UCHAR Type : 3; UCHAR Audit : 1; // Reserved .. FilterReplyMessage 에러 코드 E_INVALIDARG 커널드라이버-앱간 통신을 위해 드라이버에선 FltSendMessage를 호출하고 이에 대한 처리 및 응답을 위해 앱에선 FilterReplyMessage를 호출합니다. 문제는 FilterReplyMessage 호출 후 E_INVALIDARG 라는 에러 코드가 발생되는 것. E_INVALIDARG 는 winerror.h에 다음과 같이 정의되어 있습니다. #define E_INVALIDARG _HRESULT_TYPEDEF_(0x80070057L) 여러가지 예제(spy 등등)를 보고 커널 드라이버에서 FltSendMessage를 잘 했음에도 불구하고 앱 단의 FilterReplyMessage 에서 자꾸 E_INVALIDARG 에러가 나온다. 물론 드라이버로 응답 메세지도 가지 않다보니 드라이버의 FltSend.. HAL_INITIALIZATION_FAILED 테스트 용도로 사용하는 Windows 10(x64) VM에서 가끔씩 동일한 BSOD가 발생한다. 커널 드라이버 개발 테스트이기에 내가 만든 드라이버에서 오류가 발생하나 싶은데 WinDbg로 보면 그런것 같진 않다. 최종적으로 이 문제점을 알아내는 것이 목표이고 반드시 알아내야 하는 이유는 이 VM에 내가 만든 2가지 커널 드라이버가 동작하고 있어 찔리기 때문이다. 우선 왜 이런 BSOD가 발생하는지 찾아보자. 인터넷에서 검색한 영문의 번역(원문은 하단 링크) HAL_INITIALIZATION_FAILED 는 대부분 절전(슬립)모드에서 깨어날 때 발생하고 주 원인은 하드웨어 또는 디바이스 드라이버의 문제이다. 보통은 오래된 PC에서 발생된다. 다행히 이 문제는 풀기 어렵진 않으니 아래 4가지 단계를 따라 .. 이전 1 2 다음