From 9c8583957c3f05610600c2a3c605867f807c27ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 20 Feb 2016 01:00:47 +0100 Subject: [PATCH] AS1/2 deobfuscation fixes --- .../flash/action/deobfuscation/ActionDeobfuscator.java | 4 ++-- .../flash/action/model/GetVariableActionItem.java | 10 ++-------- .../decompiler/flash/action/swf5/ActionDelete.java | 5 +++-- .../decompiler/flash/action/swf5/ActionNewObject.java | 3 ++- .../com/jpexs/decompiler/flash/ecma/EcmaScript.java | 8 ++++++++ 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java index d54253027..0af47a08b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java @@ -466,9 +466,9 @@ public class ActionDeobfuscator extends SWFDecompilerAdapter { Action action = item.action; /*System.out.print(action.getASMSource(actions, new ArrayList(), ScriptExportMode.PCODE)); - for (int j = 0; j < stack.size(); j++) { + for (int j = 0; j < stack.size(); j++) { System.out.print(" '" + stack.get(j).getResult() + "'"); - } + } System.out.println();*/ if (action instanceof ActionConstantPool) { lastConstantPool = (ActionConstantPool) action; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java index c40c5d50c..8cb96d20b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java @@ -98,18 +98,12 @@ public class GetVariableActionItem extends ActionItem { @Override public boolean isCompileTime(Set dependencies) { - if (computedValue == null) { - return false; - } - return computedCompiletime; + return false; //? } @Override public Object getResult() { - if (computedValue == null) { - return Undefined.INSTANCE; - } - return computedResult; + return null; } public void setComputedValue(GraphTargetItem computedValue) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionDelete.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionDelete.java index 774b940af..5a37bfba3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionDelete.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionDelete.java @@ -47,12 +47,13 @@ public class ActionDelete extends Action { @Override public boolean execute(LocalDataArea lda) { - String memberName = lda.popAsString(); + /* String memberName = lda.popAsString(); Object o = lda.pop(); if (o instanceof ActionScriptObject) { ((ActionScriptObject) o).setMember(memberName, Undefined.INSTANCE); } - return true; + return true;*/ + return false; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionNewObject.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionNewObject.java index 1a30889f2..0fd5b777d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionNewObject.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionNewObject.java @@ -62,8 +62,9 @@ public class ActionNewObject extends Action { } ActionScriptObject obj = new ActionScriptObject(); //TODO:check type - ActionScriptFunction constructor = (ActionScriptFunction) lda.stage.getMember(objectName); + /*ActionScriptFunction constructor = (ActionScriptFunction) lda.stage.getMember(objectName); lda.stage.callFunction(constructor.getFunctionOffset(), constructor.getFunctionLength(), args, constructor.getFuncRegNames(), obj); + */ lda.stack.push(obj); return true; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java index 1986fe97b..b0b812879 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java @@ -45,9 +45,13 @@ public class EcmaScript { if (o instanceof Boolean) { return (Boolean) o ? 1.0 : 0.0; } + if (o instanceof Float) { + o = (double) (float) (Float) o; + } if (o instanceof Double) { return (Double) o; } + if (o instanceof Long) { return (double) (long) (Long) o; } @@ -397,6 +401,10 @@ public class EcmaScript { if (o instanceof Integer) { return ((Integer) o) != 0; } + if (o instanceof Float) { + o = (double) (float) (Float) o; + } + if (o instanceof Double) { Double d = (Double) o; if (d.isNaN()) {