«nm»은 VMA가 0으로 표시됩니다. 기호는 어디에 매핑됩니까?

«nm»은 VMA가 0으로 표시됩니다. 기호는 어디에 매핑됩니까?

"nm"을 통해 컴파일된 응용 프로그램의 기능을 보고 있습니다. "send()" 함수에 대한 중단점을 설정하려면 주소를 찾아야 합니다. 문제는 이 함수가 VMA가 0인 "nm"의 출력에 해당하고 해당 주소는 "A" 태그에 표시된 대로 미래에 변경되지 않는다는 것입니다.

00000000 A _send@16

궁금해요. 이게 무슨 뜻인가요? 유언장은 실제로 어디에 매핑되어 있나요 send()? 유용할 수 있는 참고 사항: 바이너리는 MinGW로 컴파일된 PE 애플리케이션입니다.

답변1

업데이트를 원하시면 이것을 확인하세요. 주소 0의 함수는 해당 함수가 정의된 원래 개체 파일의 주소 0에 있어야 합니다. 제가 사용하고 있는 라이브러리에는 별도의 파일에 많은 함수가 정의되어 있어서 많은 중요한 함수의 주소가 0x0인 것 같습니다. 명령줄에 추가하면 -o각 기호의 원래 대상 파일 이름을 읽어야 합니다.

https://stackoverflow.com/questions/1863613/what-does-symbol-value-from-nm-command-mean

관련 정보