에서 strace출력, 실행 파일이 호출하는 라이브러리에 대한 경로는 호출에 있습니다 open(). 동적으로 연결된 실행 파일에서 사용하는 시스템 호출입니까? 무엇에 대해 dlopen()? open()내가 생각했던 전화가 프로그램 실행에 중요한 역할을하는 것은 아닙니다.
동적으로 링크 된 라이브러리에서 함수 호출 속도를 높이기 위해 자체 수정 코드를 사용할 수 있습니까? 내가 이해하는 한 ELF 공유 라이브러리 는 일종의 간접 점프 테이블 (프로 시저 연결 테이블 또는 PLT)을 사용하여 라이브러리 함수의 지연 바인딩을 가능하게합니다. 목적은 코드 세그먼트에서 테이블을 수정하지 않고도 첫 번째 호출에서 함수 위치의 지연 …
내가 이미 알고있는 것 : ELF 실행 파일에는 여러 섹션이 있습니다. 분명히 .text 및 .data 섹션은 프로그램의 주요 부분이므로 메모리에로드됩니다. 그러나 프로그램이 작동하려면 특히 동적으로 링크 된 경우 더 많은 정보가 필요합니다. 내가 관심있는 것은 .plt, .got, .dynamic, .dynsym, .dynstr 등의 섹션입니다. 기능을 주소에 연결하는 기능을 담당하는 ELF의 부분. 내가 …