2017-11-14 1 views
0

남자. ProGuard가 Java 메소드 및 클래스에서 수행하는 것처럼 정적 라이브러리에서 가져온 함수 이름을 변경하려고합니다. 나는 그것이 역전을 훨씬 더 어렵게 만들 수 있다고 생각한다. 예를 들어, 내가 sha1과 어떤 파일을 검사한다면, 나는 역기가 정확히이 함수가 무엇인지 알기를 원치 않는다. 대신 func0024를 볼 수 있습니다.안드로이드 ndk 라이브러리의 함수 이름을 바꾸는 방법

android cmake의 표준 도구로 이것을 만들 수 있습니까? 아니면 당신이이 일을 위해 어떤 도구를 조언 할 수 있겠습니까?

+0

당신은 당신이 공유 라이브러리에 링크 정적 라이브러리를 구축하고 있으며, 다음에 해당 공유 라이브러리를로드하여 앱..? 어떤 이유로 든 스트립트 라이브러리를 앱과 함께 출하하지 않는 한 정적 라이브러리의 함수 이름이 공유 라이브러리에 이미 있어야합니다. – Michael

+0

apk에서 readelf로 바이너리를 확인하면 변경되지 않은 openssl 함수 이름이 표시됩니다. –

+0

에 한번 당신의'LOCAL_CFLAGS'과'-Wl에'-fvisibility = hidden'를 추가 - 당신의'LOCAL_LDFLAGS'에 제외-libs와, ALL'. 그리고 .so 파일에서 'readelf'를 실행하고 있는지 확인하십시오 (예 :'obj/local'의 파일이 아닙니다). – Michael

답변

0

마이클의 대답에 따라 당신은 당신의 CMakeLists.txt 파일에이 줄을 추가해야

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wl,--exclude-libs,ALL")

+0

자세한 내용은 https://stackoverflow.com/questions/2222162/how-to-apply-gcc-fvisibility-option-to-symbols-in-static-libraries를 참조하십시오. – Michael

관련 문제