갓 댐 매니페스트

@codemaru · July 19, 2011 · 2 min read

유저 모드 후킹 모듈을 만들고 있는데 이상하게 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

 

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중