News in FFDec 18.0.x

Video playback, transforming tool and many more enhancements in 18.0.x of JPEXS Free Flash decompiler. Let’s take a look on all of these…

Keyboard shortcut to remove tags (DEL, SHIFT+DEL)

DEL and SHIFT+DEL can be pressed on tag tree to remove tags / items.

Quick search tree (Ctrl+F) for everything, not just AS3 classes

Previously, Quick search on tag tree (Ctrl + F) only searched in AS3 classes. Now all items are searched.

Search for all items

Quick search (Ctrl+F) for tag list view

Quick search now works even in tag list view.

Memory search – show size and adress in hex, show only aligned to N bytes

Checkbox for hexadecimal display of SWF size and address added to Search in memory dialog. Also a field to enter number which file addresses should be aligned to.

Search memory dialog with new Hexadecimal and align items

AS3 – “internal” keyword support

AS3 decompiler shows “internal” keyword instead of empty modifier on traits.
This keyword is also supported in editor for compilation.

ProductInfo tag information display

ProductInfo tag decoded information like Product, Edition, Version, Build and Compilation date is shown on its page.

ProductInfo tag information

DebugId tag proper display and editation

DebugId tag value now shows as hexadecimal UUID value which can be easily edited.

DebugId UUID as string

Display of DefineVideoStream tags with VLC player

Embedded movies inside DefineVideoStream / VideoFrames can be now played and properly displayed on timeline inside FFDec. VLC player is required to be installed on your system.
VLC bitness should match your Java version. If you use 64 bit Java, 64 bit VLC should be installed.

DefineVideoStream playback

List of treenode subitems on otherwise empty panel (with 32×32 icons)

When you selected an item in the tree which had no previewable subitems, in previous version there was the empty panel. Now there is a list of subitems with 32×32 icons, which can be used for example for right click menu, selection, etc.

List of 32×32 icons

DefineVideoStream codecId and videoFlagsDeblocking handled as enums in raw editation

In the raw editor (Right click menu / Raw edit) codecId and videoFlagsDeblocking inside DefineVideoStream can now be selected from a list instead of just numbers.

Enum list for codecID

Option to mute frame sounds

If you do not want to hear playback of sounds inside frames, you can turn the sound off using new “Mute frame sounds” button on the bottom left under frame image.

Mute frame sounds switch

Experimental option to fix conflation artifacts in antialiasing (slow)

New option to suppress conflation artifacts caused by incorrect antialiasing can be now enabled on Advanced settings / Display page. Conflation artifacts are for example in following picture the small white parts between the central gray circle and the black circle. There should be direct edge between gray and black, without white part. This is unfortunately the way how FFDec uses antialiasing. To properly render it, it should use so called multisampling which is done usually using some OpenGL renderers, etc. This is currently unsupported. The following option tries to fix the artifacts its own way.
But it is EXPERIMENTAL and in many cases it does not even work. And is also slow. So it is generally not recommended.

Conflation artifacts – the white edge between gray and black circle
The option to fix antialias conflation

Option to disable autoplay of sounds (DefineSound)

When you select a sound in the tree, it starts playing. This behavior can be disabled on Advanced settings / Display page.

Option to autoplay sounds

Remembering choice of loading assets via importassets tag

If you open a SWF which has dependencies loaded via ImportAssets tag, you are asked whether you want to load imported SWFs as subtags. You are also asked when the imported SWFs are missing to select another file. These decisions are now remembered and are not asked again after you close FFDec and reopen it again.

Free transform whole sprites

Sprites can be now free transformed – just like PlaceObjects. The matrix is applied to all items inside the sprite.

Transforming a DefineSprite

Transformation panel with flip/move/scale/rotate/skew/matrix options

Transform button for Sprites and PlaceObjects now shows new Transform panel when you can precisely do desired transformation operation like flipping, rotation, moving, scaling, skewing or custom matrix application. Specify transformation point to properly set center of rotation.

Transform panel, part 1
Transform panel, part 2

Move object around with arrow keys (in transform mode)

In transform mode, you can move the object one pixel left, right, up or down with arrow keys.

Alt + click selects PlaceObjectTag under cursor

On frame preview or PlaceObject preview, you can hold Alt and press left mouse button anywhere on stage where is some object located and you will immediately switch to that objects PlaceObject tag.

Double click tree node to start edit (can be enabled in settings)

Option to double click tree node to begin editation was added. It is not recommended as it can be pressed accidentally.

Double click to start editing option

Info about editation in status bar

Status bar now contains info when you are in editation mode. Because in this mode you can’t switch to other items, it is important you to not be surprised.

Status bar info about editation

AS3 P-code keyword “Unknown(N)”, where N is index. For constants out of bounds. (mostly in dead code)

New keyword for AS3 P-code for constants which are not present in the constant pool – they are out of bounds. These invalid indices can be sometimes present in dead code added by obfuscators.
Use Unknown(N) where N is a number – index to constant pool.

“Unknown(N)” keyword

AS3 P-code – Editing methods without body (interfaces / native methods)

Interface methods do not have a body. Also native methods do not have them. A native method is method used for example in playerglobal.swf library which maps the calls of methods directly to FlashPlayer C code. These methods now can be edited. They have got only a header without a body.

Editing interface method in P-code






Leave a Reply

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