News in FFDec 24.1.x

Deobfuscate identifiers for display, old flash tags support, temp variables for swap/dup, WebP image support, icons for tags, and more, in 24.1.x version.

24.1.0 – 2025-09-28

AS2 Detection of Uninitialized Fields Changes

The detection of uninitialized class fields in AS2 is now cancellable, faster (thanks to parallel processing), and can be disabled either in the advanced settings or via the deobfuscation menu.

Obfuscated DefineEditText Variable Identifiers

DefineEditText variable identifiers can now be obfuscated and remain editable without issues.

Selectable Text in DefineEditTexts

Text in displayed DefineEditTexts with the noselect=0 flag can now be selected and copied to the clipboard.

Selectable text

AS1/2 P-code curly braces pair highlighting

Curly braces highlighting in P-code

Simple Editor – Text Editing

You can now edit text in the Simple Editor. Note that it’s not a WYSIWYG editor as you might expect – it’s the same editor used in the Resources tab.

Simple Editor – Remember Last Frame / Timeline

The last frame and timeline are now preserved when switching to or from the Simple Editor, as well as when exiting the application.

Optional Heap Status Widget in the Title Bar

You can enable a special widget in the title bar that displays memory usage. Clicking the widget will trigger garbage collection.

Memory widget

Deobfuscate Identifiers Option

A new method for deobfuscating ActionScript identifiers is now available. It is non-destructive, renaming identifiers only for display purposes. Each obfuscated variable is shown as _SafeStr_N, and a list of all replaced identifiers is appended at the end of the script. During script editing, this list is used as a translation reference.

The option can be found in the Settings tab as well as in the Deobfuscation menu.

Deobfuscated identifiers and translation map at the bottom

Special Folders for Unknown and Errored Tags

SWF tags with an unknown type identifier are now placed in a separate folder. If an error occurs while reading a tag (typically due to insufficient data length), the tag is placed in the errored folder.

This applies to the Resources view.

unknown and errored folders

Icons for Every Tag Type

Each SWF tag type now has its own icon (except for GFX tags).

Icons in Add tag context menu

Frames Without ShowFrame Info

If the last frame in a Sprite or Main timeline does not end with a ShowFrame tag, it is now indicated by the text “without ShowFrame” in the last frame’s title.

Last frame does not have ShowFrame

WebP Image Format Support

Export and import now support the WebP image format. Imported images must not be animated.

Note: The WebP format is not available on the macOS x86-64 platform, as the underlying library does not support it.

AS1/2 Improved Handling of “Too Large” Blocks

In AS1/2, there is a limit to how large a code block or jump (e.g., if, while, function) can be. Previously, only a basic error message was displayed when attempting to save a block that exceeded this limit. Now, the specific line containing the problematic block is highlighted—both in ActionScript and in P-code.

AS1/2 Debugging – _global Variable Accessible

The _global variable is now accessible in the AS1/2 debugger.

AS Debugging – Hidden Non-Enumerable

Variables marked with DontEnumerate are now hidden by default. Their visibility can be restored in the advanced settings.

PlaceImagePrivate Tag Support

We added basic support for PlaceImagePrivate tag.

Generator Templates (.swt) Support

Macromedia Generator was software used to create SWF files from SWT templates back in the days of Flash 3, 4, and 5. FFDec now supports the SWT extension and its related tags: CharacterSet, GenCommand, NameCharacter, DefineTextFormat, and FontRef.

DefineVideo Tag Support

The DefineVideo tag, introduced in Flash 4, is now supported. While not very practical, its original purpose was to reference an external QuickTime movie file.

SerialNumber Tag Support

The SerialNumber tag appears to originate from the Flash 5 era, using ID 41. It contains the serial number of Flash Generator. Starting with Flash 7, however, ID 41 was reassigned to the ProductInfo tag, which has a different structure.

FreeCharacter Tag Support

The FreeCharacter tag removes a specific character, preventing it from being used later.

SyncFrame Tag Support

The SyncFrame tag is an internal tag used for display synchronization.

Hex Dump Improvements

Bit counts are now displayed in SB and UB fields. The TagIDTagLength field shows its individual parts. The type is placed after a colon instead of in parentheses, and byte fields now also indicate their length in bytes.

Avoiding Drag & Drop Problems on macOS

An option has been added to disable drag & drop from the Resources view to prevent issues on macOS, where dragging behaves differently in Java 8.

AS3 – Temporary Vars for Swap/Dup Instructions

When a script uses the swap or dup instruction in an unrecognized way, temporary variables are now used instead of generating §§ instructions.

Temp variables

Font Normalization

Some SWFs use nonstandard font storage, such as vertically flipped or oversized fonts. The new FFDec introduces a Font Normalization option in the context menu for SWFs, which restores fonts and text to a standard form—shrinking them back to 1024 em and flipping them correctly. This action is performed automatically during PDF/SVG generation, where proper normalization is required for correct export.

Flipped font

Replace Fonts from Command Line

The CLI command -replace now accepts a font ID and a TTF file to replace the font with. At this time, there is no option to specify character ranges or other parameters.

Create New GFX Tags

DefineExternalGradient, DefineGradientMap, ExporterInfo, FontTextureInfo and DefineExternalStreamSound are available in add tag context menu in GFX files.

Changed: Deobfuscation Menu Icon

Deobfuscation menu has medkit icon instead of pile of pills.

Deobfuscaction menu

Changed: Error Log Shows Last 100 Items

The Error Log window now displays the last 100 entries instead of the first 100.

Changed: AS1/2 P-code Double/Push Values

AS1/2 P-code double Push values now include a “.0” suffix to properly distinguish them. Similarly, float Push values now have an “f” suffix.

Changed: “Automatic Deobfuscation” Renamed

The term automatic deobfuscation has been renamed to deobfuscate code.

Changed: Serial Form of AS3 Search Results

The serial format of AS3 search results has been updated. As a result, saved AS3 search results from older versions are no longer compatible, and vice versa.

Removed: Resample Sound to 44kHz Feature

The option to resample sound to 44kHz has been removed, as it was not considered very useful.


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *