유저 모드 후킹 모듈을 만들고 있는데 이상하게 csrss.exe에서 해당 모듈이 로딩이 되지 않는 겁니다. GetLastError로 에러를 출력해보니 998, 잘못된 메모리 접근이라고 하더군요. 별로 하는 짓도 없는 모듈인데 csrss.exe에서만 로딩이 안되길래 별 쑈를 다하다가 결국 dummydll을 만들었습니다. 진짜 아무것도 없는 그야말로 더미였습니다. 얼마나 깨끗한지는 다음을 보면 잘 알 수 있죠.
그런데 이 놈 더미 조차 csrss.exe에서 로딩이 되지 않는 겁니다. 정말 어처구니 없었습니다. 왜 그럴까. 한 세 시간 쌩쑈를 하다가 결국 windbg를 띄우고 LoadLibraryW에 브포를 걸었습니다. 그리곤 트레이스를 했더랬죠. windbg에 출력되는 이 어이없는 메시지. 정말… 어처구니… 그 자체였습니다. 갓 댐 매니페스트…
SXS: BasepCreateActCtx() Calling csrss server failed
LDR: LdrpWalkImportDescriptor() failed to probe c:\dummydll.dll for its manifest, ntstatus 0xc0000005
매니페스트를 빼주니 잘 되더군요. Visual C++의 매니페스트 옵션이 디폴트로 포함된게 화근이었더군요. CRT빼고 온 쑈를 하면서도 매니페스트는 생각도 못했답니다. 정말… 퐝당했습니다. 그나마도 windbg에 저런 메시지가 나와서 정말 다행이었습니다. 안나왔으면 *영원히* 헬로 빠질 뻔 했습니다. 고마워요. windbg. ㅋㅋ~
어쨌든 유저 모드 후킹 모듈을 만들고 계신가요? csrss.exe에 여러분의 알흠다운 dll을 인젝션 시키고 싶으신가요? 일단 매니페스트 빼고 하세요. 그게 여러분의 정신 건강에 좋습니다.
0 0