From cc1032b819159feb1e745927658a867b8fc3d765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 10 Dec 2022 19:28:30 +0100 Subject: [PATCH] Changed AS1/2 deobfuscation - removing obfuscated declarations is now optional (default: off) --- CHANGELOG.md | 1 + .../flash/action/deobfuscation/ActionDeobfuscator.java | 8 ++++---- .../decompiler/flash/configuration/Configuration.java | 4 ++++ .../flash/gui/locales/AdvancedSettingsDialog.properties | 2 ++ .../gui/locales/AdvancedSettingsDialog_cs.properties | 5 ++++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19d07d85f..d5352e9c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ All notable changes to this project will be documented in this file. ### Changed - Quick search needs minimum of 3 characters +- AS1/2 deobfuscation - removing obfuscated declarations is now optional (default: off) ## [17.0.4] - 2022-12-02 ### Fixed 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 c9f7621b1..28a8de5dd 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 @@ -117,9 +117,10 @@ public class ActionDeobfuscator extends SWFDecompilerAdapter { changed = true; } } - //Commented out, as it may remove variables used in another DoAction or inside functions. - //changed = removeObfuscatedUnusedVariables(fastActions); - //actions.setActions(fastActions.toActionList()); + if (Configuration.deobfuscateAs12RemoveInvalidNamesAssignments.get()) { + changed = removeObfuscatedUnusedVariables(fastActions); + actions.setActions(fastActions.toActionList()); + } } } @@ -321,7 +322,6 @@ public class ActionDeobfuscator extends SWFDecompilerAdapter { return ret; } - //currently unused private boolean removeObfuscatedUnusedVariables(FastActionList actions) throws InterruptedException { if (actions.isEmpty()) { return 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 af5d88e6b..608a85163 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 @@ -835,6 +835,10 @@ public final class Configuration { @ConfigurationCategory("display") public static ConfigurationItem autoPlaySounds = null; + @ConfigurationDefaultBoolean(false) + @ConfigurationCategory("script") + public static ConfigurationItem deobfuscateAs12RemoveInvalidNamesAssignments = null; + private enum OSId { WINDOWS, OSX, UNIX } diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 94eb52b92..2faac7bd7 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -636,3 +636,5 @@ config.description.fixAntialiasConflation = Tries fixing conflation artifacts be config.name.autoPlaySounds = Autoplay sounds config.description.autoPlaySounds = Automatically play sounds (DefineSound) on treenode selection. +config.name.deobfuscateAs12RemoveInvalidNamesAssignments = AS1/2 deobfuscation: Remove variable declarations with obfuscated names +config.description.deobfuscateAs12RemoveInvalidNamesAssignments = During deobfuscation of AS1/2, remove variable declarations which have nonstandard name. WARNING: This could damage SWFs which rely on obfuscated names. 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 82f759921..24f362985 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties @@ -624,4 +624,7 @@ config.name.fixAntialiasConflation = Pokusit se opravit antialiasingovou konflac config.description.fixAntialiasConflation = Pokus\u00ed se opravit konfla\u010dn\u00ed artefakty mezi p\u0159il\u00e9haj\u00edc\u00edmi tvary zp\u016fsobenou antialiasingem. Toto zpomaluje renderov\u00e1n\u00ed. Experiment\u00e1ln\u00ed. config.name.autoPlaySounds = Automaticky p\u0159ehr\u00e1vat zvuky -config.description.autoPlaySounds = Automaticky p\u0159ehr\u00e1vat zvuky (DefineSound) p\u0159i v\u00fdb\u011bru polo\u017eky ve stromu. \ No newline at end of file +config.description.autoPlaySounds = Automaticky p\u0159ehr\u00e1vat zvuky (DefineSound) p\u0159i v\u00fdb\u011bru polo\u017eky ve stromu. + +config.name.deobfuscateAs12RemoveInvalidNamesAssignments = AS1/2 deobfuskace: Odstranit deklarace prom\u011bnn\u00fdch s obfuskovan\u00fdmi n\u00e1zvy +config.description.deobfuscateAs12RemoveInvalidNamesAssignments = B\u011bhem deobfuskace AS1/2 odstranit deklarace prom\u011bnn\u00fdch, kter\u00e9 maj\u00ed nestandardn\u00ed n\u00e1zev. VAROV\u00c1N\u00cd: Toto m\u016f\u017ee po\u0161kodit SWF soubory, kter\u00e9 z\u00e1vis\u00ed na obfuskovan\u00fdch n\u00e1zvech.