La section Elfe. Notes est-elle vraiment nécessaire?
Question
Sur Linux, j'essaie de dépouiller un fichier ELF lié statiquement à l'essentiel nu. Quand je cours:
strip --strip-unneeded foo
ou
strip --strip-all foo
Le fichier résultant a toujours une section Fat .Notes qui semble être pleine de cordes funky.
La section .Notes est-elle vraiment nécessaire ou puis-je le forcer en toute sécurité avec la section - Rempove?
Merci pour toute aide.
La solution
De l'expérience et de regarder la page de l'homme pour strip
, On dirait strip
not censé se débarrasser de toutes les sections et chaînes qui ne sont pas nécessaires; juste symboles. Quoth the Man Page:
GNU strip discards all symbols from object files objfile.
Cela étant dit, par expérience, strip
, même sans --strip-all
, supprime les sections inutiles pour le chargement, comme .symtab
et .strtab
, et vous pouvez, comme vous le notez, supprimer les sections avec lesquelles vous le souhaitez --remove-section
.
Comme exemple de .notes
Section, j'ai pris /bin/ls
De ma boîte Ubuntu 11.10 64 bits:
$ readelf -Wn /bin/ls
Notes at offset 0x00000254 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.15
Notes at offset 0x00000274 with length 0x00000024:
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Build ID: 3e6f3159144281f709c3c5ffd41e376f53b47952
Qui englobe le .note.ABI-tag
Section et la .note.gnu.build-id
section. Il semble qu'ils contiennent des données qui ne sont pas nécessaires pour charger le programme, mais non aussi standard, et n'est pas connu par strip
Pour ne pas être nécessaire pour le bon fonctionnement du programme, car un ELF peut avoir n'importe quel nombre de sections "inconnues" supplémentaires qui ne sont pas sûres à supprimer. Ainsi, en utilisant une liste blanche virtuelle (qui échouerait lamentablement), il utilise une liste noire de sections dont il sait qu'il peut se débarrasser, et le fait.
Version courte: ces sections ne semblent pas être standard et pourraient être utilisées pour diverses choses, donc strip
Je ne sais pas qu'il est sûr de les retirer. Mais sur la base des informations à l'intérieur de celle que j'ai prise au-dessus, si c'est votre propre programme, il est presque certainement sûr de le supprimer.