Skip to content

Commit

Permalink
支持dex反编译,原生已经支持apk伪加密包,不再处理.修复带-o参数,目录并存在的情况下无-f参数,异常信息错误问题
Browse files Browse the repository at this point in the history
  • Loading branch information
rover12421 committed Jul 21, 2013
1 parent 081c8a0 commit 888db37
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 22 deletions.
2 changes: 2 additions & 0 deletions APK-Test/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
dependencies {
compile project(':brut.apktool:apktool-cli')

testCompile group: 'junit', name: 'junit', version: '4.+'
}
17 changes: 16 additions & 1 deletion APK-Test/src/main/java/com/rover12421/ApkTest/Test.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,23 @@
package com.rover12421.ApkTest;

import brut.apktool.Main;


public class Test {
public static void main(String[] args) {
public static void main(String[] args) throws Exception {
System.out.println("APK-Test Project");

String path = "TestFile/";

//dex file test
String input = path + "test.dex";
String output = path + "test.dex_out";
// Main.main(new String[]{"d", input, "-o", output});

//伪加密测试
input = path + "jiamiFlag.apk";
output = path + "jiamiFlag_out";
Main.main(new String[]{"d", input, "-f", "-o", output});

}
}
8 changes: 0 additions & 8 deletions APK-Util/src/main/java/com/rover12421/ApkUtil/Util.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void pickFieldFile(String apkTmpPath) {

trapCount = 10;
this.apkTmpPath = apkTmpPath;
trapMap = new HashMap<>();
trapMap = new HashMap<String, Trap>();

fileLooper(new File(apkTmpPath+"/smali"));
}
Expand Down
12 changes: 8 additions & 4 deletions brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,17 @@ private static void cmdDecode(CommandLine cli) throws AndrolibException {
decoder.setFrameworkDir(cli.getOptionValue("p"));
}
if (cli.hasOption("o") || cli.hasOption("output")) {
decoder.setOutDir(new File(cli.getOptionValue("o")));
outDir = new File(cli.getOptionValue("o"));
decoder.setOutDir(outDir);
} else {

// make out folder manually using name of apk
// make out folder manually using $name+'_out' of apk,dex,zip
String outName = apkName;
outName = outName.endsWith(".apk") ? outName.substring(0,
outName.length() - 4) : outName + ".out";
outName = ( outName.endsWith(".apk")
|| outName.endsWith(".zip")
|| outName.endsWith(".dex"))
? outName.substring(0, outName.length() - 4) + "_out"
: outName + "_out";

// make file from path
outName = new File(outName).getName();
Expand Down
1 change: 1 addition & 0 deletions brut.apktool/apktool-lib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ compile project(':brut.j.dir'),
project(':brut.apktool.smali:dexlib'),
project(':brut.apktool.smali:baksmali'),
project(':brut.apktool.smali:smali'),
project(':APK-Util'),
"org.yaml:snakeyaml:1.12",
"xpp3:xpp3:1.1.4c",
"xmlunit:xmlunit:1.3",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,11 @@ public void writeMetaFile(File mOutDir, Map<String, Object> meta)
// options.setIndent(4);
Yaml yaml = new Yaml(options);

FileWriter writer = null;
// FileWriter writer = null;
Writer writer = null;
try {
writer = new FileWriter(new File(mOutDir, "apktool.yml"));
// writer = new FileWriter(new File(mOutDir, "apktool.yml"));
writer = new OutputStreamWriter(new FileOutputStream(new File(mOutDir, "apktool.yml")),"UTF-8");
yaml.dump(meta, writer);
} catch (IOException ex) {
throw new AndrolibException(ex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@

package brut.androlib;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipEntry;

import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;

import brut.androlib.err.InFileNotFoundException;
import brut.androlib.err.OutDirExistsException;
import brut.androlib.res.AndrolibResources;
Expand All @@ -26,12 +36,6 @@
import brut.directory.DirectoryException;
import brut.directory.ZipExtFile;
import brut.util.OS;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;

import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.zip.ZipEntry;

/**
* @author Ryszard Wiśniewski <[email protected]>
Expand Down Expand Up @@ -80,6 +84,11 @@ public void decode() throws AndrolibException, IOException {
throw new AndrolibException(ex);
}
outDir.mkdirs();

if (mApkFile.getAbsolutePath().endsWith(".dex")) {
mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug, mDebugLinePrefix, mBakDeb);
return;
}

if (hasSources()) {
switch (mDecodeSources) {
Expand Down

0 comments on commit 888db37

Please sign in to comment.