타사 공유 라이브러리를 사용하고 있으며 함수가 공유 라이브러리에 의해 프로그래밍 방식으로 내보내 졌는지 확인해야합니다.프로그램에서 공유 라이브러리 노출 함수를 확인하는 방법
수행 방법. 함수가 존재하지 않으면 다른 함수를 로컬로 실행해야하기 때문에이 함수가 필요합니다.
타사 공유 라이브러리를 사용하고 있으며 함수가 공유 라이브러리에 의해 프로그래밍 방식으로 내보내 졌는지 확인해야합니다.프로그램에서 공유 라이브러리 노출 함수를 확인하는 방법
수행 방법. 함수가 존재하지 않으면 다른 함수를 로컬로 실행해야하기 때문에이 함수가 필요합니다.
아마도 dlsym을 사용할 수 있습니다.
dlopen을 사용하여 라이브러리를로드하는 경우 반환하는 핸들을 사용합니다. 이 특별한 의사가있다
: dlsym을 사람에서
:이 라이브러리에 링크하는 경우 당신은 (그것을 지적하기위한 CAF에 10 배) 특별한 의사 핸들을 사용할 수 있습니다
핸들, RTLD_DEFAULT 및 RTLD_NEXT. 전자는 기본 라이브러리 검색 순서를 사용하여 원하는 기호의 첫 번째 항목을 찾습니다. 후자는 현재 라이브러리 다음의 검색 순서에서 함수의 다음 발생을 찾습니다. 이를 통해 다른 공유 라이브러리의 함수를 래퍼로 제공 할 수 있습니다.
기능 서명을 얻으려는 라이브러리의 헤더 파일을 확인하십시오. dlopen을 사용하면 라이브러리를 동적으로로드하고 심볼이 라이브러리에 노출되어있는 경우 해당 심볼을 가져올 수 있으며 그 이후에는 dlsym 및 dlclose를 호출합니다.
당신이
시도'나노 -C -D libtest.so이 objdump를 -T처럼 노출 된 모든 기호를 확인하는 명령을 objdump를 사용할 수있을 수 있습니다 | 쉘 스크립트를 사용하고 있다면 grep -F 'T'', C/C++에서는'dlopen','dlsym'과'dlclose' 함수를 사용하십시오. 그렇지 않으면 적어도 사용중인 프로그래밍 언어를 지정하십시오. – Philipp