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 *