我对golang zip阅读器有疑问。我们有apk构建器构建apk然后用dex protector加密这个apk。
当我尝试打开apk文件时,请返回错误“zip:not valid zip file”。但是当我尝试使用unzip或zipinfo打开时,工作正常 (另外我注意到一些有趣的东西:在用ZIPArchive打开的PHP 5.5 apk文件中很好,但在5.6中返回错误就像golang)
我尝试打开调试golang archive / zip pckage,发现此行https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L269中返回了错误。
然后我尝试像这样调试这一行:
fmt.Printf("%+v", f)
fmt.Println(
"len(f.Extra):", len(f.Extra),
"len(b):", len(b),
"tag:", tag,
"size:", size,
)
结果如下:
&{FileHeader:{
Name:META-INF/MANIFEST.MF CreatorVersion:20 ReaderVersion:20 Flags:2056 Method:8
ModifiedTime:23093 ModifiedDate:18230 CRC32:2569174240
CompressedSize:359 UncompressedSize:570 CompressedSize64:359 UncompressedSize64:570
Extra:[] ExternalAttrs:0 Comment:
} zipr:0xc208038038 zipsize:276893 headerOffset:0}
&{FileHeader:{
Name:res/drawable/ic_launcher.png CreatorVersion:10 ReaderVersion:10 Flags:2048 Method:0
ModifiedTime:22030 ModifiedDate:18230 CRC32:2310989215
CompressedSize:20418 UncompressedSize:20418 CompressedSize64:20418 UncompressedSize64:20418
Extra:[] ExternalAttrs:0 Comment:
} zipr:0xc208038038 zipsize:276893 headerOffset:2066}
...
---------------->PROBLEM HERE:-------------------=>
&{FileHeader:{
Name:AndroidManifest.xml CreatorVersion:10 ReaderVersion:10 Flags:2048 Method:0
ModifiedTime:22030 ModifiedDate:18230 CRC32:1929033187
CompressedSize:7268 UncompressedSize:7268 CompressedSize64:7268 UncompressedSize64:7268
Extra:[204 94 136 27 148 14 49 95 154 4 231 53 127 242 4 199 243 207 229 161 103 90 116 69 45 31 54 220 113 43 172 4 159 109 211 57 217 2 161 17 196 16 168 19 174 138 107 15 36 181 223 22 15 21 106 153]
ExternalAttrs:0 Comment:
} zipr:0xc208038038 zipsize:276893 headerOffset:22954}
len(f.Extra): 56
len(b): 52
tag: 24268
size: 7048
额外标题中的问题(我认为这个额外的标题在加密apk时添加了dex protector)。大小超过额外字节的长度。 但是在php5.5中解压缩util和ZipArchive与这个额外内容完美搭配。如何解决这个问题?
我想在go archive / zip包中重写这个部分,这样额外的东西不会影响golang zip阅读器。
这对我来说非常重要,因为我重写了构建apk从php到golang,我遇到了一个无法决定的问题:(。请帮帮我。