2011-01-10 5 views
0

실행 파일이 있습니다 (예 : notepad.exe). 이 실행 파일에 대한 함수 맵을 작성하려고합니다. 그래서이 실행 파일을 실행하면 일부 주소 (모듈의 기본 주소)에로드됩니다. 이제 각 함수는 모듈 내부에서 약간의 오프셋을 갖습니다. 각 모듈의 오프셋 (함수의 코드가 시작되는 곳)에 의해 각 함수를 모듈 내에서 고유하게 식별하려고 시도합니다. 실행 파일을 실행하는 컴퓨터와 상관없이이 오프셋이 항상 동일하게 유지 될 것이라고 생각하십니까?모듈 내부의 함수 오프셋은 항상 동일하게 유지됩니까?

+0

무엇이 무엇을로드하는지 명확하지 않습니다. 제발, 분명히 해줘. 그 외에 최종 목표는 무엇입니까? – jweyrich

+0

@jweyrich : 프로세스가 메모리 내부에로드되었음을 의미했습니다. 나는 누가 그것을 적재하는지 정말로 모른다. 최종 목표는 프로그램 내의 각 함수를 오프셋으로 고유하게 식별하는 것입니다. – Bruce

답변

1

Windows에는 Vista 이후로 실행 파일의 기본이 임의의 시작 주소에 배치되는 주소 공간 레이아웃 임의 화라고하는 기능이 있습니다. 목표는 특정 종류의 보안 공격을 저지하는 것입니다. 현재는 함수의 내부 무작위 화는 발생하지 않지만 새 버전의 Windows에서이 함수가 발생하지 않도록하는 것은 없습니다.

+0

ASLR에 대해 알고 있지만로드 된 dll이 실행 파일이 아닌 경우에만 수행되었다고 생각했습니다. 또한 다른 컴퓨터에서 실행하더라도 실행 파일의 기반이 동일하다는 것을 알았습니다. 그래서, 당신에 따르면 상쇄는 똑같이 유지되어야합니다, 그렇죠? – Bruce

+0

@ Bruce : 맞습니다. 오프셋은 동일하게 유지되어야합니다. Microsoft는 도구를 사용하여 실행 파일의 기본 블록 레이아웃을 최적화합니다 (http://www.microsoft.com/windows/cse/bit_projects.mspx). 이것은 근본적으로 함수 재정렬/무작위 화와는 다르다. 따라서 함수 오프셋이 불변 인 지금은 안전한 가정이라고 기대할 것이다. – EmeryBerger

관련 문제