Package jadx.zip.parser
Class JadxZipParser
java.lang.Object
jadx.zip.parser.JadxZipParser
- All Implemented Interfaces:
IZipParser,Closeable,AutoCloseable
Custom and simple zip parser to fight tampering.
Many zip features aren't supported:
- Compression methods other than STORE or DEFLATE
- Zip64
- Checksum verification
- Multi file archives
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate @Nullable ByteBufferprivate static final intprivate static final intprivate intprivate @Nullable ZipContentprivate @Nullable RandomAccessFileprivate @Nullable FileChannelprivate final Set<ZipReaderFlags> private static final intprivate static final byteprivate static final org.slf4j.Loggerprivate final ZipReaderOptionsprivate final booleanprivate final booleanprivate final Fileprivate final IJadxZipSecurity -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static byte[]bufferToBytes(ByteBuffer buf, int start, int size) (package private) static InputStreambufferToStream(ByteBuffer buf, int start, int size) booleancanOpen()voidclose()private static voidcompareCDAndLFH(ByteBuffer buf, int start, JadxZipEntry entry) private voidentryParseFailed(JadxZipEntry entry, Exception e) private JadxZipEntryfixEntryFromCD(JadxZipEntry entry, int start) private ByteBuffer(package private) byte[]getBytes(JadxZipEntry entry) (package private) InputStreamgetInputStream(JadxZipEntry entry) private ZipContentprivate booleanisEncrypted(JadxZipEntry entry) private booleanisValidEntry(JadxZipEntry zipEntry) private voidload()private JadxZipEntryprivate JadxZipEntryloadFileEntry(int start) loadFromCentralDirs(int maxEntriesCount) open()private intreadFlags(JadxZipEntry entry) private static StringreadString(ByteBuffer buf, int fileNameLen) private static intreadU2(ByteBuffer buf) private intprivate intsearchLocalFileHeaders(int maxEntriesCount) toString()private IZipEntryuseFallbackParser(JadxZipEntry entry) private static voidverifyEntry(JadxZipEntry entry)
-
Field Details
-
LOG
private static final org.slf4j.Logger LOG -
LOCAL_FILE_HEADER_START
private static final byte LOCAL_FILE_HEADER_START- See Also:
-
LOCAL_FILE_HEADER_SIGN
private static final int LOCAL_FILE_HEADER_SIGN- See Also:
-
CD_SIGN
private static final int CD_SIGN- See Also:
-
END_OF_CD_SIGN
private static final int END_OF_CD_SIGN- See Also:
-
zipFile
-
options
-
zipSecurity
-
flags
-
verify
private final boolean verify -
useLimitedDataStream
private final boolean useLimitedDataStream -
file
-
fileChannel
-
byteBuffer
-
endOfCDStart
private int endOfCDStart -
fallbackZipContent
-
-
Constructor Details
-
JadxZipParser
-
-
Method Details
-
open
- Specified by:
openin interfaceIZipParser- Throws:
IOException
-
canOpen
public boolean canOpen() -
isValidEntry
-
getBuffer
-
load
- Throws:
IOException
-
searchLocalFileHeaders
-
loadFromCentralDirs
- Throws:
IOException
-
loadCDEntry
-
fixEntryFromCD
-
compareCDAndLFH
-
loadFileEntry
-
searchEndOfCDStart
- Throws:
IOException
-
searchEntryStart
private int searchEntryStart() -
getInputStream
-
getBytes
-
verifyEntry
-
entryParseFailed
-
useFallbackParser
-
initFallbackParser
-
isEncrypted
-
readFlags
-
bufferToBytes
-
bufferToStream
-
readU2
-
readString
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
getZipFile
-
toString
-