Ghidra: Batch importing .apk fails

Created on 14 Apr 2019  路  3Comments  路  Source: NationalSecurityAgency/ghidra

Describe the bug
Trying to batch import an .apk file (e.g. https://github.com/markushi/android-ui/blob/master/example.apk) fails with two uncaught exceptions.

To Reproduce
Steps to reproduce the behavior:

  1. File -> Batch Import ...
  2. Select .apk file
  3. See error

Expected behavior
The files inside the .apk file are imported or if that isn't supposed to happen an error message stating that .apk files can't be batch imported.

Attachments

Error log:

Adding Source Files - Uncaught Exception: java.lang.NoClassDefFoundError: org/jf/dexlib/DexFile
java.lang.NoClassDefFoundError: org/jf/dexlib/DexFile
    at ghidra.file.formats.android.dex.DexToSmaliFileSystem.open(DexToSmaliFileSystem.java:112)
    at ghidra.formats.gfilesystem.factory.GFileSystemBaseFactory.create(GFileSystemBaseFactory.java:90)
    at ghidra.formats.gfilesystem.factory.GFileSystemBaseFactory.create(GFileSystemBaseFactory.java:41)
    at ghidra.formats.gfilesystem.factory.FileSystemFactoryMgr.mountUsingFactory(FileSystemFactoryMgr.java:176)
    at ghidra.formats.gfilesystem.factory.FileSystemFactoryMgr.probe(FileSystemFactoryMgr.java:345)
    at ghidra.formats.gfilesystem.FileSystemService.probeFileForFilesystem(FileSystemService.java:626)
    at ghidra.formats.gfilesystem.FileSystemService.probeFileForFilesystem(FileSystemService.java:565)
    at ghidra.plugins.importer.batch.BatchInfo.processAsFS(BatchInfo.java:297)
    at ghidra.plugins.importer.batch.BatchInfo.doAddFile(BatchInfo.java:226)
    at ghidra.plugins.importer.batch.BatchInfo.processFS(BatchInfo.java:336)
    at ghidra.plugins.importer.batch.BatchInfo.processAsFS(BatchInfo.java:312)
    at ghidra.plugins.importer.batch.BatchInfo.doAddFile(BatchInfo.java:226)
    at ghidra.plugins.importer.batch.BatchInfo.addFile(BatchInfo.java:194)
    at ghidra.plugins.importer.batch.BatchInfo.doAddFiles(BatchInfo.java:493)
    at ghidra.plugins.importer.batch.BatchInfo$AddFilesRunnable.monitoredRun(BatchInfo.java:530)
    at ghidra.util.task.TaskBuilder$TaskBuilderTask.run(TaskBuilder.java:192)
    at ghidra.util.task.Task.monitoredRun(Task.java:128)
    at ghidra.util.task.TaskLauncher.lambda$startBackgroundThread$2(TaskLauncher.java:315)
    at java.base/java.lang.Thread.run(Thread.java:834)

and

Uncaught Exception! 
java.lang.NullPointerException
    at ghidra.plugins.importer.batch.BatchImportDialog.addSources(BatchImportDialog.java:428)
    at ghidra.plugins.importer.batch.BatchImportDialog.addSources(BatchImportDialog.java:409)
    at ghidra.plugins.importer.batch.BatchImportDialog.setupInitialDefaults(BatchImportDialog.java:376)
    at ghidra.plugins.importer.batch.BatchImportDialog.lambda$showAndImport$0(BatchImportDialog.java:74)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    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)

Environment (please complete the following information):

---------------------------------------------------
Build Date: 2019-Apr-03 1342 EDT
Ghidra Version: 9.0.2
Java Home: /usr/lib/jvm/java-11-openjdk-11.0.2.7-0.el7_6.x86_64
JVM Version: Oracle Corporation 11.0.2
OS: Linux 3.10.0-957.10.1.el7.x86_64 amd64
Workstation: localhost
Bug

Most helpful comment

Hey thanks for reporting this bug. I was able to reproduce it and we'll work on a patch. It's unrelated to #350.

All 3 comments

This works in Ghidra 9.0.1.

This could be related to #350.

Hey thanks for reporting this bug. I was able to reproduce it and we'll work on a patch. It's unrelated to #350.

Similar issue: Says "cant read lang spec" and then this exception below.

Batch Import Task - Uncaught Exception: ghidra.app.plugin.processors.sleigh.SleighException: File not found - language probably did not compile properly
ghidra.app.plugin.processors.sleigh.SleighException: File not found - language probably did not compile properly
    at ghidra.app.plugin.processors.sleigh.SleighLanguageProvider.getNewSleigh(SleighLanguageProvider.java:118)
    at ghidra.app.plugin.processors.sleigh.SleighLanguageProvider.getLanguage(SleighLanguageProvider.java:99)
    at ghidra.program.util.DefaultLanguageService$LanguageInfo.getLanguage(DefaultLanguageService.java:382)
    at ghidra.program.util.DefaultLanguageService.getLanguage(DefaultLanguageService.java:103)
    at ghidra.app.util.opinion.AbstractLibrarySupportLoader.doLoad(AbstractLibrarySupportLoader.java:332)
    at ghidra.app.util.opinion.AbstractLibrarySupportLoader.loadProgram(AbstractLibrarySupportLoader.java:83)
    at ghidra.app.util.opinion.AbstractProgramLoader.load(AbstractProgramLoader.java:114)
    at ghidra.plugins.importer.tasks.ImportBatchTask.doImportApp(ImportBatchTask.java:149)
    at ghidra.plugins.importer.tasks.ImportBatchTask.doImportBatchGroup(ImportBatchTask.java:127)
    at ghidra.plugins.importer.tasks.ImportBatchTask.doBatchImport(ImportBatchTask.java:116)
    at ghidra.plugins.importer.tasks.ImportBatchTask.run(ImportBatchTask.java:91)
    at ghidra.util.task.Task.monitoredRun(Task.java:128)
    at ghidra.util.task.TaskLauncher.lambda$startBackgroundThread$2(TaskLauncher.java:315)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.FileNotFoundException: C:\ProgramData\chocolatey\lib\ghidra\ghidra_9.0\Ghidra\Features\FileFormats\data\languages\Dalvik\Dalvik.sla (Access is denied)
    at java.base/java.io.FileOutputStream.open0(Native Method)
    at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
    at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
    at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:187)
    at ghidra.pcodeCPort.slgh_compile.SleighCompileLauncher.run_compilation(SleighCompileLauncher.java:334)
    at ghidra.pcodeCPort.slgh_compile.SleighCompileLauncher.runMain(SleighCompileLauncher.java:239)
    at ghidra.app.plugin.processors.sleigh.SleighLanguage.reloadLanguage(SleighLanguage.java:416)
    at ghidra.app.plugin.processors.sleigh.SleighLanguage.ensureSpecificationIsCompiled(SleighLanguage.java:141)
    at ghidra.app.plugin.processors.sleigh.SleighLanguage.initialize(SleighLanguage.java:120)
    at ghidra.app.plugin.processors.sleigh.SleighLanguage.<init>(SleighLanguage.java:98)
    at ghidra.app.plugin.processors.sleigh.SleighLanguageProvider.getNewSleigh(SleighLanguageProvider.java:107)
    ... 13 more


Build Date: 2019-Feb-28 1236 EST
Ghidra Version: 9.0
Java Home: C:\Program Files\Java\jdk-11.0.2
JVM Version: Oracle Corporation 11.0.2
OS: Windows 10 10.0 amd64
Workstation: DESKTOP

Was this page helpful?
0 / 5 - 0 ratings

Related issues

0x6d696368 picture 0x6d696368  路  18Comments

niedabao1 picture niedabao1  路  23Comments

ghost picture ghost  路  29Comments

mumbel picture mumbel  路  29Comments

rszibele picture rszibele  路  35Comments