검색결과 리스트
글
오늘 드라이버에서 ZwReadVirtualMemroy, ZwWriteVirtualMemory를 SSDT 훅 할 일이 있어 코드를 작성해보았다.
대충 어느정도 작성되었다 싶어 실행시키는 순간....
드라이버 로드가 안된다. -_-;
에러를찍어보니,,
127 (ERROR_PROC_NOT_FOUND),
2 (ERROR_FILE_NOT_FOUND)
에러가 번갈아 가면서 나온다. 뭥미..-_-^
왜!! 왜왜왜왜왜 다른 함수들과 동일하게 훅을 했는데도 불구하고,, 안될까...
한참 헤메다가 외국의 어느 포럼의 한줄 댓글에서 원인을 찾았다.ㅠ
헤더에 다른 함수들 과 마찬가지로
아래 처럼 작성 했었는데,,
NTSYSAPI
NTSTATUS
NTAPI
ZwReadVirtualMemory(
HANDLE ProcessHandle,
PVOID BaseAddress,
PVOID Buffer,
LONG NumberOfBytesToRead,
PULONG NumberOfBytesReaded OPTIONAL );
문제는 ZwReadVirtualMemory는 Export함수가 아니라는거,,,
그러니 암만
SYSTESERVICE( ZwReadVirtualMemory );
해도 안되는 것이었다.
드라이버 자체가 로드가 안되다니,,,..
결국 인덱스 하드코딩해서,, 해결....ㅠㅠ
하루 반이 걸렸던,, ZwReadVirtualMemory SSDT Hook...
이와 같은 실수를 더 이상 범하기 싫어 남겨본다.
'Windows Programming' 카테고리의 다른 글
| ZwReadVirtualMemory, ZwWriteVirtualMemory (0) | 2012/05/11 |
|---|
설정
트랙백
댓글
글
어느 보안 모듈의 드라이버를 분석해보았다.
이유는 뭐 그냥 ? ㅎㅎ
난 이제껏 제대로 된 보안모듈 분석을 해 본적이 없어 두근 거렸었다.
하지만 의외로 할만하다는 사실을 깨달았다.
물론.... 패킹이 안되었기 때문에 할만했지, 패킹이 되 있었더라면, 엄청 고생했을 듯.
분석해본 과정 및 결과를 간단하게 작성해보자면,
NtOpenProcess 등등의 SSDT 후킹이 되어 있어 후킹부터 풀어야 했다.
하지만 원복하고 조금 지나니 변조체크로 인해 꺼지는 듯 하였다.
그래서 일단 KdEnteredDebugger & KdDebuggerEnabled 라는 변수로 디버깅 체크를 하길래 간단하게 무력화 한 다음,
SSDT 후킹하고 있는게 풀렸는지 체크하는 루틴 마저 무력화 했다.
이 작업들은 드라이버가 로드 될 때 무력화 했는데, 나중에.. 그러니 완전히 로드 된 후 한참 있다 수정하면
감지가 되어버렸다.
결국 로드되자마자 CRC를 구한 후 구한 CRC값으로 무결 체크를 한다는 것을 알고는
CRC체크하는 루틴마저 무력화 했다.
그러다가 갑자기 생각난 방법... 이 정도면, 내가 수정한 드라이버파일을 올리는게 가능하지 않을까 싶어
도전 하던 도중...
드라이버가 로드되지 못했는데도 불구하고 종료없이 잘 동작한다!!!!!!!
드라이버가 없으니 SSDT 훅은 물론이요 여러 드라이버에서 하는 동작들은 사라졌다.
캬... 이럴 수가.. 이럴수가.. 너무 허무하다.;;
이럴꺼면 SSDT 훅이 정상인지 체크는 왜 하며 CRC체크는 왜 하며 디버깅 모드인지는 왜 체크하는지,,
내가 모르는 뭔가가 있을 수도 있지만, 엄청 기대하고 보았지만, 드라이버 단에서는 별거 없더라~ 하는게 나의 생각이다.
이상 끝.
'Reversing' 카테고리의 다른 글
| 보안 모듈 드라이버 무력화 해본 소감. (0) | 2012/05/06 |
|---|
설정
트랙백
댓글
글
NtSetInformationThread 함수에 두번째 인자로
ThreadHideFromDebugger( 0x11 ) 라는 옵션을 주게 되면
스레드에 브포를 걸었을 경우에 디버거로 넘어오지 않게 된다.
좀 더 공부해야겠지만, 우선 핵툴이 이렇게 방해하는 관계로
NtSetInformationThread를 훅 해서 두번째 인자에
ThreadHideFromDebugger 가 넘어오면 실패하던지 다른 인자로 바꿔 넘기던지
하는 툴을 만들어야겠다.
혹시 모르니 ThreadHideFromDebugger 로 셋팅 되어 있는지 확인해서 무력화 시키는 것도 연구해봐야겠다.
오늘 간만에 어마어마한걸 건졌다.
끗
'API' 카테고리의 다른 글
| NtSetInformationThread (0) | 2012/02/28 |
|---|
RECENT COMMENT