mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-13 07:38:09 +00:00
dynamic variable names fixed
This commit is contained in:
@@ -370,6 +370,28 @@ public class ActionDeobfuscator extends ActionDeobfuscatorSimple {
|
||||
break;
|
||||
}
|
||||
|
||||
if (action instanceof ActionGetVariable) {
|
||||
if (stack.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (stack.peek() instanceof DirectValueActionItem) {
|
||||
// avoid dynamic variable names, for example: eval("item" add i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (action instanceof ActionSetVariable) {
|
||||
if (stack.size() < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (stack.peek(2) instanceof DirectValueActionItem) {
|
||||
// avoid dynamic variable names, for example: set("item" add i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (action instanceof ActionPush) {
|
||||
ActionPush push = (ActionPush) action;
|
||||
boolean ok = true;
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.EvalActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetVariableActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetVersionActionItem;
|
||||
import com.jpexs.decompiler.flash.ecma.EcmaScript;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
@@ -42,7 +43,13 @@ public class ActionGetVariable extends Action {
|
||||
@Override
|
||||
public void translate(TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem name = stack.pop();
|
||||
GraphTargetItem computedVal = variables.get(name.toStringNoQuotes(LocalData.empty));
|
||||
String nameStr;
|
||||
if (name instanceof DirectValueActionItem) {
|
||||
nameStr = name.toStringNoQuotes(LocalData.empty);
|
||||
} else {
|
||||
nameStr = EcmaScript.toString(name.getResult());
|
||||
}
|
||||
GraphTargetItem computedVal = variables.get(nameStr);
|
||||
if (name instanceof DirectValueActionItem && ((DirectValueActionItem) name).value.equals("/:$version")) {
|
||||
stack.push(new GetVersionActionItem(this));
|
||||
} else if (!(name instanceof DirectValueActionItem) && !(name instanceof GetVariableActionItem)) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.StoreTypeAction;
|
||||
import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
import com.jpexs.decompiler.flash.action.model.DecrementActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetVariableActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.IncrementActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.PostDecrementActionItem;
|
||||
@@ -30,6 +31,7 @@ import com.jpexs.decompiler.flash.action.model.StoreRegisterActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.TemporaryRegister;
|
||||
import com.jpexs.decompiler.flash.action.model.operations.PreDecrementActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.operations.PreIncrementActionItem;
|
||||
import com.jpexs.decompiler.flash.ecma.EcmaScript;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
@@ -51,7 +53,13 @@ public class ActionSetVariable extends Action implements StoreTypeAction {
|
||||
public void translate(TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop().getThroughDuplicate();
|
||||
GraphTargetItem name = stack.pop();
|
||||
variables.put(name.toStringNoQuotes(LocalData.empty), value);
|
||||
String nameStr;
|
||||
if (name instanceof DirectValueActionItem) {
|
||||
nameStr = name.toStringNoQuotes(LocalData.empty);
|
||||
} else {
|
||||
nameStr = EcmaScript.toString(name.getResult());
|
||||
}
|
||||
variables.put(nameStr, value);
|
||||
if (value instanceof IncrementActionItem) {
|
||||
GraphTargetItem obj = ((IncrementActionItem) value).object;
|
||||
if (!stack.isEmpty() && stack.peek().valueEquals(obj)) {
|
||||
|
||||
Reference in New Issue
Block a user