From 318724370b852deeeb1caa157d65b1e7104b6b50 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Tue, 7 Jul 2015 22:13:35 +0200 Subject: [PATCH] common deobfuscate method --- .../abc/avm2/deobfuscation/DeobfuscationLevel.java | 13 +++++++++++++ .../src/com/jpexs/helpers/CancellableWorker.java | 1 + src/com/jpexs/decompiler/flash/gui/MainPanel.java | 13 +++---------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/DeobfuscationLevel.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/DeobfuscationLevel.java index d55ccde43..734b8c74f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/DeobfuscationLevel.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/DeobfuscationLevel.java @@ -16,6 +16,19 @@ public enum DeobfuscationLevel { return level; } + public static DeobfuscationLevel getByLevel(int level) { + switch (level) { + case 1: + return LEVEL_REMOVE_DEAD_CODE; + case 2: + return LEVEL_REMOVE_TRAPS; + case 3: + return LEVEL_RESTORE_CONTROL_FLOW; + } + + return null; + } + DeobfuscationLevel(int level) { this.level = level; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/helpers/CancellableWorker.java b/libsrc/ffdec_lib/src/com/jpexs/helpers/CancellableWorker.java index abc518be1..abde1897e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/helpers/CancellableWorker.java +++ b/libsrc/ffdec_lib/src/com/jpexs/helpers/CancellableWorker.java @@ -73,6 +73,7 @@ public abstract class CancellableWorker implements RunnableFuture { } public final void execute() { + onStart(); THREAD_POOL.execute(this); } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 921981203..5b4f39b51 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -2295,6 +2295,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void deobfuscate() { DeobfuscationDialog deobfuscationDialog = new DeobfuscationDialog(); + DeobfuscationLevel level = DeobfuscationLevel.getByLevel(deobfuscationDialog.codeProcessingLevel.getValue()); if (deobfuscationDialog.showDialog() == AppDialog.OK_OPTION) { new CancellableWorker() { @Override @@ -2302,16 +2303,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se try { ABCPanel abcPanel = getABCPanel(); if (deobfuscationDialog.processAllCheckbox.isSelected()) { - for (ABCContainerTag tag : abcPanel.getAbcList()) { - if (deobfuscationDialog.codeProcessingLevel.getValue() == DeobfuscationLevel.LEVEL_REMOVE_DEAD_CODE.getLevel()) { - tag.getABC().removeDeadCode(); - } else if (deobfuscationDialog.codeProcessingLevel.getValue() == DeobfuscationLevel.LEVEL_REMOVE_TRAPS.getLevel()) { - tag.getABC().removeTraps(); - } else if (deobfuscationDialog.codeProcessingLevel.getValue() == DeobfuscationLevel.LEVEL_RESTORE_CONTROL_FLOW.getLevel()) { - tag.getABC().removeTraps(); - tag.getABC().restoreControlFlow(); - } - } + SWF swf = abcPanel.getSwf(); + swf.deobfuscate(level); } else { int bi = abcPanel.detailPanel.methodTraitPanel.methodCodePanel.getBodyIndex(); DecompiledEditorPane decompiledTextArea = abcPanel.decompiledTextArea;