개발환경 : Visual Studio 2013 / Windows 7 x64
Active X, 후킹모듈과 같은 브라우저용 DLL을 개발하다보면 로그 처리 및 타 프로세스와 연동할 일이 생기는데 기본적으로 브라우저는 낮은 Integrity를 가지고 있으므로 temp폴더 정도의 자원만 사용할 수 있습니다.
제가 만든 프로그램 (PIPESERVER.exe - High Integrity)에서 생성한 파이프는 브라우저(iexplore.exe - Low Integrity)에서 사용할 수 없습니다.
이를 해결하기 위해 각종 핸들(PIPE 등)을 생성할 때 SECURITY 관련 속성을 인자로 주어야 합니다.
아래 예제 소스는 RPC 파이프를 이용하여 브라우저 DLL에서 EXE의 함수를 호출하는 것을 보여줍니다.
(아래 참조사이트들을 참고하여 작성하였습니다.)
# EXE (서버) Side
# DLL (클라이언트) Side
주의하여야 할 점은 RpcStringBindingCompose 함수의 인자로 local을 의미하는 "\\\\."을 사용하였는데 일반적인 경우는 "localhost"를 사용해도 상관 없지만 브라우저 DLL의 경우 반드시 "\\\\."을 사용해야 정상 동작합니다.
도움이 되는 참조 사이트
RPC 기본 샘플 예제
http://www.codeproject.com/Articles/4837/Introduction-to-RPC-Part
VISTA에서 Active X와 통신
'Windows > Dev' 카테고리의 다른 글
[C] 컴파일러 별 자료형 크기 비교 (0) | 2017.03.14 |
---|---|
ollydbg plugin - 메모리에서 base64 참조 코드 검색하기 (0) | 2016.12.03 |
콜스택 확인하기 (0) | 2015.04.27 |
Crypto API 를 이용하여 파일 MD5 구하기 (0) | 2015.04.07 |
zlib for windows (0) | 2014.07.01 |