ZIP files are fun. You need to scan for 4 magic bytes starting from the end of the file. Then from there you can figure out how many bytes before that offset to start finding "file header offsets" in the rest of the file and the file names / sizes. But then you need to parse the file header offset to actually know where the file starts. :P
Very convoluted but I guess it could be worse.