如何从Android的.so本地代码库中删除符号?
我有一个已构建好的.so文件,其中有成千上万个符号在十六进制编辑器中明显可见。IDA Pro根据可执行文件中的符号自动反汇编出正确的符号。
然而,如果我要求nm转储符号表,则会显示没有符号。strip和objcopy也没有效果。
我有一个已构建好的.so文件,其中有成千上万个符号在十六进制编辑器中明显可见。IDA Pro根据可执行文件中的符号自动反汇编出正确的符号。
然而,如果我要求nm转储符号表,则会显示没有符号。strip和objcopy也没有效果。
C:\AndroidProject.apk\lib\armeabi-v7a>arm-linux-androideabi-strings.exe libMeow.so | findstr _ZN11SecretClass14SecretFunctionERKS_
_ZN11SecretClass14SecretFunctionERKS_
C:\AndroidProject.apk\lib\armeabi-v7a>arm-linux-androideabi-nm.exe libMeow.so
arm-linux-androideabi-nm.exe: libMeow.so: no symbols
C:\AndroidProject.apk\lib\armeabi-v7a>copy /y libMeow.so libMeow-test.so
1 file(s) copied.
C:\AndroidProject.apk\lib\armeabi-v7a>sha1sum libMeow.so libMeow-test.so
0a36701ba44b4cfb31e6f6506349493d5466cd70 *libMeow.so
0a36701ba44b4cfb31e6f6506349493d5466cd70 *libMeow-test.so
C:\AndroidProject.apk\lib\armeabi-v7a>arm-linux-androideabi-strip.exe libMeow-test.so
C:\AndroidProject.apk\lib\armeabi-v7a>sha1sum libMeow.so libMeow-test.so
0a36701ba44b4cfb31e6f6506349493d5466cd70 *libMeow.so
0a36701ba44b4cfb31e6f6506349493d5466cd70 *libMeow-test.so
C:\AndroidProject.apk\lib\armeabi-v7a>arm-linux-androideabi-strip.exe -g libMeow-test.so
C:\AndroidProject.apk\lib\armeabi-v7a>sha1sum libMeow.so libMeow-test.so
0a36701ba44b4cfb31e6f6506349493d5466cd70 *libMeow.so
0a36701ba44b4cfb31e6f6506349493d5466cd70 *libMeow-test.so
为保护罪犯隐私,人名已被更改。
-fvisibility-inlines-hidden
,因为你提到了可见性的事情。如果链接其他库,则必须使用-Wl,--exclude-libs,ALL
。没有-Wl,--exclude-libs,ALL
,即使使用-fvisibility = hidden -fvisibility-inlines-hidden
,我们的共享对象也将重新导出数百个符号。另请参见如何将gcc -fvisibility选项应用于静态库中的符号? - jww-ffunction-sections -fdata-sections
和链接器标志-Wl,--gc-sections
。 - jww-fvisibility=hidden
。更多详情请参见:https://dev59.com/-WIk5IYBdhLWcg3wRcQo#21452277 - Danny Parker