2017-01-30 5 views
1

objdump 파일을보고 레지스터 유출을 인식하는 방법은 무엇입니까? 제 생각에 스택 포인터를 추적하여 수행 할 수 있습니다 : sp 함수 프롤로그 및 에필로그 이상으로 이동, 레지스터 누출을 나타냅니다.Objdump 파일을 통해 유출 등록을 어떻게 인식 할 수 있습니까?

어떤 코드 줄이 레지스터 누출을하는지 알고 싶습니다. 또한 복원 된 레지스터가 전역 변수를 가리키는 곳은 어디입니까?

답변

1

레지스터 누출은 스택 포인터를 움직일 필요가 없으며 로컬 변수가 스택에 쏟아져서 현재 프레임에있는 동안 계속적으로 직접 사용되며 컴파일러는 대신 오프셋이있는 스택 프레임을 사용합니다 레지스터의.

가장 좋은 방법은 계속 읽고 쓰는 메모리 주소를 찾는 것입니다. 이것은 컴파일러 결함으로 인해 사용 가능한 레지스터가 있거나, 다른 쓰레드/코드 유닛이 addr에 의해 일부 로컬 변수에 액세스하고 있지 않음을 증명할 수없는 경우에도 발생할 수 있습니다 (예 : 변수 주소가 범위를 벗어난 곳에 복사되는 경우). 그런 경우에는 그 변수를 메모리에 유지하는 것이 필요합니다.