Issue details
When opening an xapk file and trying to view it's manifest.json everything that is shown is a NullPointerException stack trace:
Error decode json
java.lang.NullPointerException: Cannot invoke "java.nio.ByteBuffer.position(int)" because "buf" is null
at jadx.zip.parser.JadxZipParser.bufferToBytes(JadxZipParser.java:359)
at jadx.zip.parser.JadxZipParser.getBytes(JadxZipParser.java:321)
at jadx.zip.parser.JadxZipParser.getInputStream(JadxZipParser.java:291)
at jadx.zip.parser.JadxZipEntry.getInputStream(JadxZipEntry.java:69)
I assume the XAPK file buffer had already been closed at that time and thus JadxZipParser.byteBuffer is already been set to null.
Sample app: https://d.apkpure.com/b/XAPK/com.skool.skoolcommunities?versionCode=94
Open Resources -> manifest.json
Full stack trace:
jadx.core.utils.exceptions.JadxException: Error decode: manifest.json
at jadx.api.ResourcesLoader.decodeStream(ResourcesLoader.java:108)
at jadx.api.ResourcesLoader.loadContent(ResourcesLoader.java:115)
at jadx.api.ResourceFile.loadContent(ResourceFile.java:56)
at jadx.gui.treemodel.JResource.loadContent(JResource.java:194)
at jadx.gui.treemodel.JResource.getCodeInfo(JResource.java:181)
at jadx.gui.ui.codearea.CodeArea.getCodeInfo(CodeArea.java:117)
at jadx.gui.ui.codearea.CodeArea.load(CodeArea.java:125)
at jadx.gui.ui.codearea.CodePanel.load(CodePanel.java:121)
at jadx.gui.ui.codearea.CodeContentPanel.<init>(CodeContentPanel.java:26)
at jadx.gui.treemodel.JResource.getContentPanel(JResource.java:168)
at jadx.gui.ui.tab.TabbedPane.onTabOpen(TabbedPane.java:417)
at jadx.gui.ui.tab.TabsController.lambda$openTab$0(TabsController.java:73)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at jadx.gui.ui.tab.TabsController.openTab(TabsController.java:73)
at jadx.gui.ui.tab.TabsController.openTab(TabsController.java:59)
at jadx.gui.ui.tab.TabsController.selectTab(TabsController.java:106)
at jadx.gui.ui.MainWindow.nodeClickAction(MainWindow.java:906)
at jadx.gui.ui.MainWindow$5.mousePressed(MainWindow.java:1398)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:288)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6623)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4572)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NullPointerException: Cannot invoke "java.nio.ByteBuffer.position(int)" because "buf" is null
at jadx.zip.parser.JadxZipParser.readFlags(JadxZipParser.java:352)
at jadx.zip.parser.JadxZipParser.isEncrypted(JadxZipParser.java:346)
at jadx.zip.parser.JadxZipParser.getBytes(JadxZipParser.java:310)
at jadx.zip.parser.JadxZipParser.getInputStream(JadxZipParser.java:291)
at jadx.zip.parser.JadxZipEntry.getInputStream(JadxZipEntry.java:69)
at jadx.api.ResourcesLoader.decodeStream(ResourcesLoader.java:98)
... 49 common frames omitted
Jadx version
latest unstable version from git
Java version
17.0.11
OS
Issue details
When opening an xapk file and trying to view it's
manifest.jsoneverything that is shown is a NullPointerException stack trace:I assume the XAPK file buffer had already been closed at that time and thus
JadxZipParser.byteBufferis already been set tonull.Sample app: https://d.apkpure.com/b/XAPK/com.skool.skoolcommunities?versionCode=94
Open Resources -> manifest.json
Full stack trace:
Jadx version
latest unstable version from git
Java version
17.0.11
OS