better AS1/2 parser

This commit is contained in:
Jindra Petk
2013-04-14 07:30:55 +02:00
parent 116bf760f0
commit 38f0941235
4 changed files with 863 additions and 493 deletions

View File

@@ -77,7 +77,8 @@ public class SWFInputStream extends InputStream {
private long percentMax;
private List<byte[]> buffered = new ArrayList<byte[]>();
private ByteArrayOutputStream buffer;
private static boolean DEOBFUSCATION_ALL_CODE_IN_PREVIOUS_TAG = true;
private static boolean DEOBFUSCATION_ALL_CODE_IN_PREVIOUS_TAG = (Boolean)Configuration.getConfig("deobfuscateUsePrevTagOnly",true);
private static boolean AUTO_DEOBFUSCATE = (Boolean)Configuration.getConfig("autoDeobfuscate",true);
public int getBufferLength() {
return buffer.size();
@@ -585,7 +586,7 @@ public class SWFInputStream extends InputStream {
if (ins.isBranch() || ins.isJump()) {
if (ins instanceof ActionIf && !stack.isEmpty() && (stack.peek().isCompileTime() && (!stack.peek().hasSideEffect()))) {
if (AUTO_DEOBFUSCATE && (ins instanceof ActionIf) && !stack.isEmpty() && (stack.peek().isCompileTime() && (!stack.peek().hasSideEffect()))) {
ActionIf aif = (ActionIf) ins;
if (aif.ignoreUsed && (!aif.jumpUsed)) {
ins.setIgnored(true);
@@ -872,7 +873,7 @@ public class SWFInputStream extends InputStream {
} else if (next.equals("c")) {
goaif = true;
}
} else if (top.isCompileTime() && (!top.hasSideEffect()) && ((!top.isVariableComputed()) || (top.isVariableComputed() && enableVariables && (!notCompileTime)))) {
} else if (AUTO_DEOBFUSCATE && top.isCompileTime() && (!top.hasSideEffect()) && ((!top.isVariableComputed()) || (top.isVariableComputed() && enableVariables && (!notCompileTime)))) {
//if(top.isCompileTime()) {
//if(false){
if (enableVariables) {