免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2066 | 回复: 0
打印 上一主题 下一主题

HP-UX下ELF64文件信息清理工具 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-06 18:26 |只看该作者 |倒序浏览
项目组借用了一台小机, 比较老, 跑的还是HP-UX 11.00, yaw中看到配置是
2*750Mhz cpus, 1.5G mem, 先凑合着用了.

装好了 aCC 和 gcc 后, 照惯例先编译自己常用的一些工具, 在编译 lsof 时发现了一个以前没注意的问题, 这促使我编写了这个我称之为 elfs (ELF64 Stripper) 的工具.

问题是这样的:
1) HP-UX 11.00下 lsof 是 kmem-based 的, 故必须编译成64位;
2) HP-UX 下64位执行文件不再是 SOM 结构, 而是 ELF64 结构;
3) ELF64 结构里包含了一些对程序执行无用, 仅仅是注释用的section, 比如说有一个 .note 的section;
4) 我是用 aCC 来编译 lsof 的, 结果发现在产生的目标文件中就包含有这个叫 .note 的section;
5) 讨厌的事情是: aCC 在这个叫 .note 的section里放的居然是用来产生目标文件的全部源文件信息, 如修改时间/编译时间/最后连接时间, 最可恨的是, 还有全路径名! 也许 aCC 的设计者认为这样对日后程序出问题时定位错误有帮助(强烈怀疑中...), 但显然这暴露了编译者的目录结构和相应的使用习惯(隐私泄漏?), 而且无端地增大了执行文件的尺寸(不幸的是有一定偏执倾向的我很在意这个);
6) 在 man aCC 和 man ld 没有找到"合法"的剔除这些信息的途径后(在此恳请达人不吝赐教), 我决定自己写一个小工具来做掉它:)

于是 elfs 就这样出现了, 经过它处理后我用 aCC 编译的 lsof 从 198536 减小到了 176856, 更重要的是我的个人信息最大可能(?)地从中剔除了:)

在编程中发现存在更"过份"的方式来进一步减小尺寸, 但将破坏 ELF 文件的完备性和一致性, 尽管不影响程序的运行, 但会导致某些依赖其的工具不能正常工作, 如 bintuils 中的 readelf/elfdump/strip 等, 而这显然也是不能被我接受的.

没什么大用, 也或者早有了类似甚至更强的工具可以达到相同的目的, 如果这样(几乎可以肯定是这样^_^), 就当是一次小小的练习:)

OK, 介绍完毕, 有兴趣的朋友这里下载:


文件:
elfs.tar.bz2
大小:
10KB
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11350/showart_166037.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP