2013-07-14 6 views
0

에서 스택 프레임 포인터에 액세스 할 수 있습니까?우리는 C 프로그램에 함수 이름/주소의 스택 프레임 포인터에 액세스 할 수있는 방법이 있나요 함수 이름

나는 GDB의 기능의 주소에서 시작 메모리 주소의 내용을 분석하는 것을 시도했다, 그러나 의미있는 정보를 얻을 수 없었다.

는 아무도 나에게이에 대한 몇 가지 힌트를 제공시겠습니까?

감사합니다.

답변

3

C 프로그램의 함수 이름/주소에서 스택 프레임 포인터에 액세스 할 수있는 방법이 있습니까?

C 프로그램의 함수 이름과 주소는 링크 시간에 고정되어 있으며 일반적으로 변경되지 않습니다. 반면에 스택 포인터는 런타임 재산이며, 함수가 호출 될 때마다 변경 될 수 있습니다.

GDB를 언급 했으므로, 예를 들어 함수 내에서 중지되면 스택 포인터 을 찾을 수 있습니다. info frame GDB 명령.

+0

덕분에, 나는 정보 프레임 명령을 알고있다. 사실, 일부 포인터 조작을 사용하여 FP에 액세스 할 수있는 방법을 모색하려고했습니다. –

+0

FP에 액세스하려면 * 어딘가에 *를 시작해야하며 어디에서 * 시작할 지에 대한 질문이 명확하지 않습니다. 함수 주소로 시작하길 원하지만, 함수 주소가 FP와 완전히 관련이 없다고 설명 했으므로 여기에서 얻을 수는 없습니다. 다른 곳에서 일하는 경우 질문을 명확히하여보다 나은 답변을 드릴 수 있습니다. –

+0

감사합니다. 좀 더 분석을 해보았습니다. –

1

함수의 상단에서 변수를 선언하고 그 주소를 가지고?

void foo() 
{ 
int dbg;void* sfp = &dbg; 

}