Adding debug. Kudos to Ziggy (ziggy@******.com)

This commit is contained in:
Connor Tumbleson 2012-09-14 14:27:15 -05:00
parent 1e0a80f9a8
commit 97d8134eb0
4 changed files with 19 additions and 8 deletions

View File

@ -95,6 +95,8 @@ public class Main {
decoder.setDecodeSources(ApkDecoder.DECODE_SOURCES_NONE);
} else if ("-d".equals(opt) || "--debug".equals(opt)) {
decoder.setDebugMode(true);
} else if ("-b".equals(opt) || "--no-debug-info".equals(opt)) {
decoder.setBaksmaliDebugMode(false);
} else if ("-t".equals(opt) || "--frame-tag".equals(opt)) {
i++;
if (i >= args.length) {
@ -236,6 +238,8 @@ public class Main {
" Do not decode resources.\n" +
" -d, --debug\n" +
" Decode in debug mode. Check project page for more info.\n" +
" -b, --no-debug-info\n" +
" Baksmali -- don't write out debug info (.local, .param, .line, etc.).\n" +
" -f, --force\n" +
" Force delete destination directory.\n" +
" -t <tag>, --frame-tag <tag>\n" +

View File

@ -62,14 +62,14 @@ public class Androlib {
}
}
public void decodeSourcesSmali(File apkFile, File outDir, boolean debug)
public void decodeSourcesSmali(File apkFile, File outDir, boolean debug, boolean bakdeb)
throws AndrolibException {
try {
File smaliDir = new File(outDir, SMALI_DIRNAME);
OS.rmdir(smaliDir);
smaliDir.mkdirs();
LOGGER.info("Baksmaling...");
SmaliDecoder.decode(apkFile, smaliDir, debug);
SmaliDecoder.decode(apkFile, smaliDir, debug, bakdeb);
} catch (BrutException ex) {
throw new AndrolibException(ex);
}

View File

@ -82,7 +82,7 @@ public class ApkDecoder {
mAndrolib.decodeSourcesRaw(mApkFile, outDir, mDebug);
break;
case DECODE_SOURCES_SMALI:
mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug);
mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug, mBakDeb);
break;
case DECODE_SOURCES_JAVA:
mAndrolib.decodeSourcesJava(mApkFile, outDir, mDebug);
@ -139,6 +139,10 @@ public class ApkDecoder {
mDebug = debug;
}
public void setBaksmaliDebugMode(boolean bakdeb) {
mBakDeb = bakdeb;
}
public void setForceDelete(boolean forceDelete) {
mForceDelete = forceDelete;
}
@ -267,4 +271,5 @@ public class ApkDecoder {
private boolean mForceDelete = false;
private String mFrameTag;
private boolean mKeepBrokenResources = false;
}
private boolean mBakDeb = true;
}

View File

@ -29,15 +29,16 @@ import org.jf.dexlib.DexFile;
*/
public class SmaliDecoder {
public static void decode(File apkFile, File outDir, boolean debug)
public static void decode(File apkFile, File outDir, boolean debug, boolean bakdeb)
throws AndrolibException {
new SmaliDecoder(apkFile, outDir, debug).decode();
new SmaliDecoder(apkFile, outDir, debug, bakdeb).decode();
}
private SmaliDecoder(File apkFile, File outDir, boolean debug) {
private SmaliDecoder(File apkFile, File outDir, boolean debug, boolean bakdeb) {
mApkFile = apkFile;
mOutDir = outDir;
mDebug = debug;
mBakDeb = bakdeb;
}
private void decode() throws AndrolibException {
@ -47,7 +48,7 @@ public class SmaliDecoder {
try {
baksmali.disassembleDexFile(mApkFile.getAbsolutePath(),
new DexFile(mApkFile), false, mOutDir.getAbsolutePath(), null,
null, null, false, true, true, true, false, false,
null, null, false, true, true, mBakDeb, false, false,
mDebug ? main.DIFFPRE: 0, false, false, null);
} catch (IOException ex) {
throw new AndrolibException(ex);
@ -57,4 +58,5 @@ public class SmaliDecoder {
private final File mApkFile;
private final File mOutDir;
private final boolean mDebug;
private final boolean mBakDeb;
}