호출 문에 사용 된 주소가 동적이 아닙니다. 다른 함수 호출과 마찬가지로 링크시 고정 주소입니다. 이는 호출이 실제로 스텁에 있고 스텁이 실제 함수로의 간접 점프를 수행하기 때문입니다. 간접 점프는 가져 오기 테이블의 위치를 참조하는 메모리 피연산자를 사용합니다. 실행 파일 (또는 DLL)이 Windows에 의해로드 될 때 실행 파일 또는 DLL이 링크 된 모든 DLL에서 사용하는 모든 함수의 주소로 가져 오기 테이블을 업데이트합니다.
이 같은 실행 파일 호출 명령이 그렇다면이 같은 astub
call [email protected]
그리고 다른 곳에서 같은 실행 파일에 있습니다 : 정의
[email protected]:
jmp [[email protected]]
그리고 어딘가에서 가져 오기 테이블에있다 이렇게 :
[email protected]:
DD ?
Windows는값을 설정합니다. 실행 파일 (또는 DLL)이로드 될 때 가져 오기 테이블의실행 파일 (또는 DLL)이로드 된 후 값을 변경하는 것이 그리 어렵지는 않지만이 작업을 변경할 수있는 방법은 많지 않습니다. 가져 오기 테이블은 읽기 전용 섹션에있을 수 있습니다. 즉, 가상 메모리 보호를 변경해야 할 수도 있습니다.
찾고있는 용어는 * 재배치입니다. * – fuz