2017-01-20 3 views

답변

1

call dword ds:[004000238h]는 간접 호출 근처, 그것은 004000238h에서 DWORD 값을 판독하고 통화를하는 데 사용한다.

대괄호와 dword ptr은 명령어의 유형을 결정하기위한 부분입니다.

명령어의 피연산자가 메모리 피연산자이므로 DS은 암묵적으로 읽는 데 사용됩니다 (디스 어셈블리를 세그먼트 대체 구문으로 표시하는 것이 좋습니다).

CS의 현재 값이 변경되지 않았으므로 통화가 거의 완료되었습니다 (보호 모드의 원거리 전화는 드물고 특별한 의미를 지닙니다).
CS의 현재 값과 관련하여 CS이 암시 적으로 사용된다고 말할 수 있습니다.

Intel manual 3protected mode의 호출 메커니즘을 설명합니다.

부수적으로 32 비트 시스템에서도 세그먼테이션이 효과적으로 비활성화되어 있으므로 (모든 설명자가 0이됩니다) 선택기 레지스터는 잊어 버릴 수 있지만 TLS 및 SEH는 일반적으로 fs/gs을 사용합니다 레지스터).

+0

c의 정적 연결 모듈에서도 가져 오기 주소 테이블이 필요한 이유는 무엇입니까? 동적 연결에 IAT가 사용 된 것 같습니다. –

+0

@ user7445340 특정 예제 없이는 말하기 어렵지만 Windows API는 주로 사용자 공간 DLL로 구현됩니다. C 런타임은 여전히'user32' 및'kernel32'와 같은 라이브러리를로드해야합니다. –