2008-10-08 7 views
9

우리는 응용 프로그램이 시작될 때로드되는 많은 dll 파일을 가진 프로젝트를 가지고 있습니다. dll 파일의 baseaddress는 중복되어 메모리 이미지가 재배치됩니다. 자동으로 baseaddress를 할당하거나 각 dll 파일에 대해 "양호한"baseaddress를 계산할 수 있습니까?/baseaddress를 "좋은"값으로 설정하려면 어떻게해야합니까?

답변

7

당신은 플랫폼 SDK와 Visual Studio를 함께 제공 내가

당신은 DLLS의 목록 REBASE 제공 한 위해 appliction에 의해로드 된 DLL이 전체 무리의 기본 주소를 설정하는 생각 REBASE 유틸리티를 사용할 수 있습니다 시스템 DLL을 포함하지 않고 프로그램을 구성하는 모든 DLL의 더미로드를 수행하고 새 기본 주소를 지정합니다.

이것은 최종 빌드 단계의 일부로 수행 할 수 있습니다. here을 리베이스에 박사 돕 스는 기사 및 일반 here

+1

이 작업을 수행하기 위해 REBASE.EXE -d -b 0x60000000 * .dll을 호출 할 수 있음을 알았습니다. – frast

3

에서 리베이스에서 Microsoft 기사는 DLL을 배포하는 경우가있다

에 관계없이 당신이 당신의 기본 주소를 설정하는 방법, 항상 위험이 다른 DLL이 없습니다 귀하가 작성한 주소는 이미 해당 주소에서로드됩니다 (예 : 전역 후크 DLL). .

는 비스타 구축하고 또한 경우에 당신은 실제로 여기에 걷어차 ASLR 수 있도록

을/DYNAMICBASE를 사용해야은 MSDN 링크입니다 : http://msdn.microsoft.com/en-us/library/bb384887.aspx은.

관련 문제