在Android中剥离共享库的节头

在Android中剥离共享库的节头,android,cmake,android-ndk,elf,strip,Android,Cmake,Android Ndk,Elf,Strip,我在Android上有一个Java+NDK项目,其中包含共享库的CMakeLists.txt文件,我想去掉.so文件的节头。我使用了sstrip和一些其他工具,在CMakeLists.txt文件中使用add\u custom\u命令添加asPOST\u BUILD。编译完成后,我看到补丁程序(sstrip等)工作正常,但出现了一个错误,如lib.so:File truncated,应用程序根本无法运行,因为它无法加载.so文件。我刚刚在Android studio的Run终端上收到应用程序终止的

我在Android上有一个Java+NDK项目,其中包含共享库的
CMakeLists.txt
文件,我想去掉.so文件的节头。我使用了
sstrip
和一些其他工具,在
CMakeLists.txt
文件中使用
add\u custom\u命令添加as
POST\u BUILD
。编译完成后,我看到补丁程序(sstrip等)工作正常,但出现了一个错误,如
lib.so:File truncated
,应用程序根本无法运行,因为它无法加载.so文件。我刚刚在Android studio的Run终端上收到应用程序终止的消息

即使我更改了部分标题中的一些值而没有删除它们,我也会遇到类似的错误

AFAIK执行或动态加载不需要节头。
为什么应用程序运行时没有节头?

不允许删除这些节头() :

每个ELF文件都包含在节标题中的附加信息。这些头现在必须存在,因为动态链接器使用它们进行健全性检查。一些开发人员试图剥离它们,试图混淆二进制文件并阻止反向工程。(这实际上没有帮助,因为可以使用广泛可用的工具重建剥离的信息。)


不允许您删除这些标题() :

每个ELF文件都包含在节标题中的附加信息。这些头现在必须存在,因为动态链接器使用它们进行健全性检查。一些开发人员试图剥离它们,试图混淆二进制文件并阻止反向工程。(这实际上没有帮助,因为可以使用广泛可用的工具重建剥离的信息。)