Skip to content

Use length in header for checksum, fix error in Dex v41#2711

Merged
skylot merged 2 commits intoskylot:masterfrom
kmod-midori:v41-checksum-fix
Dec 2, 2025
Merged

Use length in header for checksum, fix error in Dex v41#2711
skylot merged 2 commits intoskylot:masterfrom
kmod-midori:v41-checksum-fix

Conversation

@kmod-midori
Copy link
Copy Markdown
Contributor

Dex v41 (#2128) allows storing multiple dex files inside a single container. Currently the checksum verification uses the whole file for calculation, which fails if there are multiple files inside a single dex, as the checksum only covers the dex entry that is immediately following the header, not the whole file which is actually 2 or more dex files. This leads to JADX failing to load services.jar in various Android 16 ROMs.

This passes all currently available tests, but I don't know if it will fail on ill-formed dex files out there, one can always disable checksum checking tho.

Example file (taking from Samsung OneUI 8.0):
services.zip

@skylot
Copy link
Copy Markdown
Owner

skylot commented Dec 2, 2025

@kmod-midori thank you for fix and sample 👍

@skylot skylot merged commit ea68024 into skylot:master Dec 2, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants