Skip to content

Commit 6f2e925

Browse files
committed
fix: check and report invalid magic in '.dex' files (#2473)
1 parent a796d15 commit 6f2e925

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,7 @@ private void checkLoadedStatus() {
624624
showLogViewer(LogOptions.allWithLevel(Level.ERROR));
625625
}
626626
} else {
627+
showLogViewer(LogOptions.allWithLevel(Level.WARN));
627628
UiUtils.showMessageBox(this, NLS.str("message.no_classes"));
628629
}
629630
}

jadx-plugins/jadx-dex-input/src/main/java/jadx/plugins/input/dex/DexFileLoader.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.io.FileInputStream;
77
import java.io.IOException;
88
import java.io.InputStream;
9+
import java.nio.charset.StandardCharsets;
910
import java.nio.file.Path;
1011
import java.util.ArrayList;
1112
import java.util.Collection;
@@ -18,6 +19,7 @@
1819
import org.slf4j.LoggerFactory;
1920

2021
import jadx.api.plugins.utils.CommonFileUtils;
22+
import jadx.core.utils.files.FileUtils;
2123
import jadx.plugins.input.dex.sections.DexConsts;
2224
import jadx.plugins.input.dex.sections.DexHeaderV41;
2325
import jadx.plugins.input.dex.utils.DexCheckSum;
@@ -69,11 +71,18 @@ private List<DexReader> load(@Nullable File file, InputStream inputStream, Strin
6971
if (in.read(magic) != magic.length) {
7072
return Collections.emptyList();
7173
}
72-
if (isStartWithBytes(magic, DexConsts.DEX_FILE_MAGIC) || fileName.endsWith(".dex")) {
74+
if (isStartWithBytes(magic, DexConsts.DEX_FILE_MAGIC)) {
7375
in.reset();
7476
byte[] content = readAllBytes(in);
7577
return loadDexReaders(fileName, content);
7678
}
79+
if (fileName.endsWith(".dex")) {
80+
// report invalid magic in '.dex' file
81+
String hex = FileUtils.bytesToHex(magic);
82+
String str = new String(magic, StandardCharsets.US_ASCII);
83+
LOG.warn("Invalid DEX magic: 0x{}(\"{}\") in file: {}", hex, str, fileName);
84+
return Collections.emptyList();
85+
}
7786
if (file != null) {
7887
// allow only top level zip files
7988
if (isStartWithBytes(magic, DexConsts.ZIP_FILE_MAGIC) || CommonFileUtils.isZipFileExt(fileName)) {

0 commit comments

Comments
 (0)