diff --git a/CHANGELOG.md b/CHANGELOG.md index 6eaca9bdc..03198e347 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,10 +8,12 @@ All notable changes to this project will be documented in this file. - Display better Graph using GraphViz (Must be configured in Advanced settings / Path) - Copy AS1/2 Graph source (GraphViz) to clipboard - rightclick menu on graph - AS1 slash syntax support (decompilation, direct editation) +- Setting of limit of executed instructions during AS1/2 deobfuscation ### Changed - AS1/2 Better unresolved constant handling - §§constant(xx) func instead of §§constantxx - AS1/2 Using eval, set functions on obfuscated names instead of §§ syntax +- Default limit of maximum executed instructions during AS1/2 deobfuscation raised to 10000 ### Fixed - Better continue in for handling 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 5a2a67f4f..703a473ac 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 @@ -76,6 +76,7 @@ import com.jpexs.decompiler.flash.action.swf5.ActionToString; import com.jpexs.decompiler.flash.action.swf5.ActionTypeOf; import com.jpexs.decompiler.flash.action.swf6.ActionGreater; import com.jpexs.decompiler.flash.action.swf6.ActionStringGreater; +import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.ecma.EcmaScript; import com.jpexs.decompiler.flash.helpers.SWFDecompilerAdapter; import com.jpexs.decompiler.flash.helpers.collections.FixItemCounterStack; @@ -97,8 +98,6 @@ import java.util.Stack; */ public class ActionDeobfuscator extends SWFDecompilerAdapter { - private final int executionLimit = 5000; - @Override public void actionListParsed(ActionList actions, SWF swf) throws InterruptedException { FastActionList fastActions = new FastActionList(actions); @@ -447,6 +446,7 @@ public class ActionDeobfuscator extends SWFDecompilerAdapter { int skippedInstructions = 0; ActionConstantPool lastConstantPool = null; + int executionLimit = Configuration.as12DeobfuscatorExecutionLimit.get(); boolean skippedInstructionsUnknown = false; boolean jumpedHere = true; boolean jumpFound = false; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 25996002f..5f656617e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -206,6 +206,13 @@ public final class Configuration { @ConfigurationCategory("limit") public static final ConfigurationItem decompilationTimeoutFile = null; + /** + * AS1/2 deobfuscator execution limit (max number of instructions processed) + */ + @ConfigurationDefaultInt(10000) + @ConfigurationCategory("limit") + public static final ConfigurationItem as12DeobfuscatorExecutionLimit = null; + /** * Using parameter names in decompiling may cause problems because official * programs like Flash CS 5.5 inserts wrong parameter names indices diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 2e3dd1ca3..3b72e9329 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -450,3 +450,7 @@ config.description.graphVizDotLocation = Path to dot.exe (or similar for linux) #Do not translate the Font Styles (Plain... etc.) config.name.gui.sourceFont = Source font style config.description.gui.sourceFont = FontName-FontStyle(Plain,Bold,Italic,BoldItalic)-FontSize + +#after 11.1.0 +config.name.as12DeobfuscatorExecutionLimit = AS1/2 deobfuscator execution limit +config.description.as12DeobfuscatorExecutionLimit = Maximum number of instructions processed during AS1/2 execution deobfuscation \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties index 8ebee595e..f2d6a7010 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties @@ -421,3 +421,20 @@ config.description.flexSdkLocation = Um\u00edst\u011bn\u00ed Adobe Flex SDK. Je config.name.useFlexAs3Compiler = Pou\u017e\u00edt Flex SDK kompil\u00e1tor AS3 config.description.useFlexAs3Compiler = Pou\u017e\u00edt kompil\u00e1tor AS3 z Flex SDK b\u011bhem p\u0159\u00edm\u00e9 editace ActionScriptu. (Flex SDK slo\u017eka mus\u00ed b\u00fdt nastavena) + +config.name.showSetAdvanceValuesMessage = Zobrazit znovu informace o nastaven\u00ed advance hodnot +config.description.showSetAdvanceValuesMessage = Zobrazit znovu informace o nastaven\u00ed advance hodnot + +config.name.gui.fontSizeMultiplier = N\u00e1sobitel velikosti p\u00edsma +config.description.gui.fontSizeMultiplier = N\u00e1sobitel velikosti p\u00edsma + +config.name.graphVizDotLocation = 5) Cesta k spustiteln\u00e9mu souboru GraphViz Dot +config.description.graphVizDotLocation = Cesta k dot.exe (\u010di podobn\u00e9mu pro linux) appikace GraphViz pro zobrazen\u00ed graf\u016f + +#Do not translate the Font Styles (Plain... etc.) +config.name.gui.sourceFont = Zdrojov\u00fd styl p\u00edsma +config.description.gui.sourceFont = N\u00e1zevP\u00edsma-StylP\u00edsma(Plain,Bold,Italic,BoldItalic)-VelikostP\u00edsma + +#after 11.1.0 +config.name.as12DeobfuscatorExecutionLimit = Exeku\u010dn\u00ed limit AS1/2 deobfusk\u00e1toru +config.description.as12DeobfuscatorExecutionLimit = Maxim\u00e1ln\u00ed po\u010det instrukc\u00ed prov\u00e1d\u011bn\u00fdch b\u011bhem AS1/2 exeku\u010dn\u00ed deobfuskace \ No newline at end of file