LoadLibrary를 했는데 리턴값이 0이면 GetLastError로 찍어봐야되는데요
코드수정없이 WinDbg에서 바로 볼수 있는 방법이 있습니다.
TEB 구조체의 LastErrorValue를 이용하는 것입니다.
아래는 LoadLibrary를 호출한 후에 레지스트리에 리턴값(rax)가 0임을 확인한 내용입니다.
이때 teb를 확인해보겠습니다.
LastErrorValue가 5가 나왔네요
이경우는 라이브러리를 로드할려고 했으나 권한부족으로 로드를 못한 경우였습니다.
어떤 경우에 권한이 부족할까?
NETWORK SERVICE 계정으로 돌고 있는 서비스에서 C:\TEST 폴더 밑의 특정 라이브러리를 로드하려고 시도해봤는데요. 계속 잘 되다가 해당 폴더를 공유를 걸고 나니 로드가 안되더군요. 폴더 사용권한을 확인해봤더니 공유를 걸면서 보안설정이 변경이 되서 그러했습니다.
authenticated users를 추가해주어서 저는 해결했는데요 보안이 중요하면 network service 계정만을 추가하면 되겠죠~
댓글 없음:
댓글 쓰기