You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.jar文件末尾的5/9字节Zip注释:是有效功能还是缓冲区未初始化bug?

关于Jar文件Zip归档注释中二进制数据的疑问

Jar文件是Zip格式的特殊变体,必须包含特定文件/目录,且仅能使用Zip完整功能的受限子集。我在编写自用Zip文件处理代码时发现,Mac系统上约2000个Jar文件的末尾Zip归档注释字段包含不可打印字节,这些注释长度均为5字节或9字节,完全符合Zip格式规范(并非简单附加的垃圾数据),且仅出现在Jar文件中,看起来有统一的内部格式。

Zip格式规范规定,归档注释包含一个2字节小端序的长度字段,随后是注释内容。我所研究的这些文件中,该长度字段与后续二进制数据的大小完全匹配,这排除了随机工具附加垃圾数据的可能,但仍无法排除是代码bug导致的未初始化垃圾数据。

可通过macOS自带的zipinfo -v或zipdetails -v工具查看这些字段:在zipinfo输出的顶部、zipdetails输出的底部可找到对应内容。

5字节注释示例

  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2022.1/plugins/Kotlin/lib/kotlinc_allopen-compiler-plugin.jar
    { 3, 70, 104, 0, 0 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2022.1/plugins/Kotlin/lib/kotlinc_kotlin-jps-common.jar
    { 3, 36, 96, 5, 0 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2022.1/plugins/Kotlin/lib/javaslang.jar
    { 3, 140, 63, 29, 0 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2022.1/plugins/Kotlin/lib/javax-inject.jar
    { 3, 213, 10, 0, 0 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2022.1/plugins/Kotlin/lib/kotlinc_kotlin-compiler-fe10.jar
    { 3, 63, 68, 73, 3 }

注:首字节始终为3,末字节通常为0,且从不大于9。

9字节注释示例

  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2021.3/plugins/Kotlin/lib/kotlin-compiler-fe10-for-ide-1.6.20-release-275.jar
    { 1, 199, 35, 0, 0, 58, 44, 65, 3 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2021.3/plugins/Kotlin/lib/javaslang-2.0.6.jar
    { 1, 21, 1, 0, 0, 112, 110, 28, 0 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2021.3/plugins/Kotlin/lib/kotlin-compiler-ir-for-ide-1.6.20-release-275.jar
    { 1, 168, 10, 0, 0, 187, 137, 30, 1 }
  • /Users/hippietrail/Library/Application Support/JetBrains/IdeaIC2021.3/plugins/Kotlin/lib/kotlin-compiler-common-for-ide-1.6.20-release-275.jar
    { 1, 247, 13, 0, 0, 200, 187, 235, 0 }

注:首字节始终为1,末字节通常为0,且从不大于9。

例外情况

整个系统中仅另外两个Jar文件的二进制注释长度非5或9字节(均为6字节):

  • /Users/hippietrail/Library/Caches/Google/AndroidStudio2021.1/tmp/patch-update/log4j.jar
    { 104, 11, 220, 104, 58, 0 }
  • /Users/hippietrail/Library/Caches/Google/AndroidStudio2021.1/tmp/patch-update/jna.jar
    { 104, 11, 220, 104, 61, 0 }

这些二进制注释字段是具有实际意义的特定标识,还是由未初始化缓冲区的代码bug导致的垃圾数据?


内容的提问来源于stack exchange,提问作者hippietrail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:20:18