C/C++ 파일을 바이너리로 컴파일한다고 가정합니다. 파일에 함수 foo()
이 정의되어 있다고 가정 해보십시오.함수가있는 실행 파일의 위치를 찾으려면 어떻게합니까?
이 함수에서이 함수는 어떻게 찾을 수 있습니까? 위치를 찾으면 정확한 위치를 찾습니다.
Windows 또는 Linux를 고려 중인지 여부에 따라 질문이 달라질 수 있으므로 실행 파일이 PE 형식이라고 가정 해 보겠습니다.
컴파일러가 이름을 모두 지우므로 이름별로 함수를 찾을 수 없습니까? 즉, 바이너리에서 패턴 검색을 수행해야합니까?
내가 DLL의 내 기능을 찾는데 도움이 될 수 수출 테이블을 가지고 있다는 것을 알고 있지만, Windows에서 실행 파일은 테이블이없는 ...
해당 정보는 이진 이미지에 저장되지 않습니다. PDB 또는 MAP 파일이 필요합니다. – IInspectable
그 파일은 무엇입니까? 결코 그들에 대해 들어 보지 못했습니다. – Shuzheng
[프로그램 데이터베이스 파일] (https://msdn.microsoft.com/en-us/library/yd4f8bd1(v=vs.100) .aspx) (일명 PDB 파일). MAP 파일에 대한 약간의 정보가 추가되었습니다 ([/ MAP 링커 옵션] (https://msdn.microsoft.com/en-us/library/k7xkk3e2.aspx) 참조). – IInspectable