2013-07-18 3 views
5

내 고객이 자신의 응용 프로그램 용 플러그인을 만들 수있게하고 싶지만 내 프로그램의 메모리를 찌르는 해킹을하고 싶지 않은 경우이를 방지 할 수 있습니까?DLL 기능을 제한 할 수 있습니까?

또는 DLL을 주 프로그램 메모리에 액세스 할 수없는 종류의 메모리 영역에로드합니까?

답변

4

플러그인을 별도의 프로세스에서 실행할 수 있습니다. 플러그인에 필요한 모든 정보는 해당 프로세스에 대한 메시지로 전달됩니다. 응용 프로그램에 필요한 모든 결과는 메시지로 수신됩니다. 플러그인마다 별도의 프로세스를 만들거나 모든 프로세스를 동일한 프로세스에서 실행할 수 있습니다. 플러그인 기능의

여담으로

, 가장 현대적인 버전 같은 JVM과 같은 임베디드 런타임 환경을 사용합니다. 그런 다음 플러그인은 애플리케이션과 동일한 프로세스에서 실행되지만 가상 환경의 범위 내에서 플러그인은 프로그램에서 파손될 수있는 혼란을 효과적으로 제한합니다. 이 시나리오에서는 DLL은 없지만 스크립트 코드 또는 바이트 코드가 있습니다.

1

짧은 대답은 "아니오"입니다.

긴 대답 : DLL은 메모리에로드되며 프로세스의 관점과 OS의 관점 모두에서 모든 의도와 목적에 따라 실행 파일 자체의 일부로 보입니다. 물론 DLL은 여러 실행 파일간에 공유되므로 운영 체제는 특정 DLL의 "사용자"수를 추적해야하지만 한 프로세스의 관점에서 보면 실행 파일의 일부입니다. 별도의 주소 범위이지만 DLL의 내용에 대한 권한과 사용 권한은 다른 DLL 또는 주요 실행 파일 자체와 완전히 동일합니다.

플러그인이있는 경우 플러그인을 신뢰해야합니다. 원하는 언어가 아닌 경우 DLL 모델을 사용하여 플러그인을 만들지 마십시오 (예 : 공유 메모리 영역과 다른 실행 파일을 사용하여 공유 메모리에만 액세스 가능).

관련 문제