diff --git a/libs/apktool-2.5.0.jar b/libs/apktool-2.5.0.jar
new file mode 100644
index 00000000..78556fba
Binary files /dev/null and b/libs/apktool-2.5.0.jar differ
diff --git a/libs/apktool_2.3.0.jar b/libs/apktool_2.3.0.jar
deleted file mode 100644
index 8f838ef2..00000000
Binary files a/libs/apktool_2.3.0.jar and /dev/null differ
diff --git a/pom.xml b/pom.xml
index aa63d4c7..25c17c2f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
apktool
2.3.0
system
- ${project.basedir}/libs/apktool_2.3.0.jar
+ ${project.basedir}/libs/apktool-2.5.0.jar
org.ow2.asm
@@ -186,6 +186,11 @@
smali
2.5.2
+
+ org.smali
+ baksmali
+ 2.5.2
+
org.yaml
snakeyaml
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/util/Dex2Jar.java b/src/main/java/the/bytecode/club/bytecodeviewer/util/Dex2Jar.java
index 578f1e98..6b0f6ee5 100644
--- a/src/main/java/the/bytecode/club/bytecodeviewer/util/Dex2Jar.java
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/util/Dex2Jar.java
@@ -1,6 +1,7 @@
package the.bytecode.club.bytecodeviewer.util;
import java.io.File;
+import java.lang.reflect.Field;
/***************************************************************************
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
@@ -36,7 +37,9 @@ public class Dex2Jar {
*/
public static synchronized void dex2Jar(File input, File output) {
try {
- com.googlecode.dex2jar.tools.Dex2jarCmd.main(input.getAbsolutePath());
+ com.googlecode.dex2jar.tools.Dex2jarCmd cmd = new com.googlecode.dex2jar.tools.Dex2jarCmd();
+ applyErrorFix(cmd);
+ cmd.doMain(input.getAbsolutePath());
String realOutput = input.getName().replaceAll("\\.dex", "-dex2jar.jar").replaceAll("\\.apk", "-dex2jar"
+ ".jar");
File realOutputF = new File(realOutput);
@@ -44,20 +47,21 @@ public class Dex2Jar {
File realOutputF2 = new File(realOutput);
while (realOutputF2.exists())
realOutputF2.delete();
-
- //TODO fix this properly
- // WARNING: this could probably delete important error files but until a proper dex2jar fix is added this is needed
- // or else after each APK decompile the file directory will be flooded with -error.zip
- for(File localFile : new File(".").listFiles())
- {
- if(localFile.getName().length() == 42 && localFile.getName().endsWith("-error.zip"))
- localFile.delete();
- }
} catch (Exception e) {
new the.bytecode.club.bytecodeviewer.api.ExceptionUI(e);
}
}
+ // TODO fix this properly
+ private static void applyErrorFix(com.googlecode.dex2jar.tools.Dex2jarCmd cmd) {
+ try {
+ Field f = com.googlecode.dex2jar.tools.Dex2jarCmd.class.getDeclaredField("notHandleException");
+ f.setAccessible(true);
+ f.set(cmd, true);
+ } catch (Throwable ignored) {
+ }
+ }
+
/**
* Converts a .jar to .dex
*