If you are looking for the decompiler itself, visit https://github.com/jindrapetrik/jpexs-decompiler
NEW : We have got a new blog where we post some interesting SWF internals info.
List of issues#2298 Problems of Ffdec new versions
Author: Kuroneko
Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: GUI
State: opened
I have noticed a serious problem, please listen
Ffdec v21.0.4 is for some strange reason much slower than Ffdec v14.4.0 nightly 1932.
Also, newer versions of Ffdec sometimes fail to create new classes, while v14.4.0 does it
perfectly (without killing the file).
But in v14.4.0 there is no way to change the indexes of created classes (the file may die
when trying to inherit).
I have also noticed (and some friends have noticed this problem too) that v21.0.4 is
slower in everything: it loads files slowly, the second search query does not work
immediately (whereas in v14.4.0, after the first search, the second is always immediate if
there is enough free RAM), it saves slowly.
At the same time, the new version works well with editing interface functions in bytecode,
while v14.4.0 does not support this.
Newer versions of Ffdec also break the file when trying to inherit (noted in one of the
latest versions, I have not checked this in v21.0.4).
So the "switching problem" occurs when you need to make (for example) a lot of patches in
the swf of the game, you need to add new classes and add new interfaces, and basically the
old ffdec v14.4.0 copes better with creating new classes (without killing the file, and
the new ffdec kills the file or cannot create a class :/), but in the new v21.0.4 appeared
some necessary features for editing bytecode for the same interfaces as for ex and much
more.
And when I work on a file for many hours, I have to use Ffdec v14.4.0 more often because
it does everything faster and can create classes or do inheritance more correctly, and
sometimes I switch to the new latest version of Ffdec when I need to edit something that I
can't do with v14.4.0 (for example, edit the indices of the created classes so that they
don't cause a crash if they are created inconsistently).
Can you solve this and make new versions of Ffdec faster, or at least solve the problems
with the long second (and subsequent) search and creation of new classes + inheritance?
If the new Ffdec was faster, it would be much easier to use and not have to constantly
switch from an old version to the new one and back again.
Another problem: when you open a completely new version of Ffdec with many differences
(like differences between Ffdec v14.4.0 and Ffdec v21.0.4) - your settings are all over
the place.
Open a new one -> your settings are taken over -> close and open the old one -> you have
an empty Ffdec and all settings are reset.
And so constantly
1) Ad "Is much slow."
It depends on what task you want to do.
For example AS3 decompiling might be slower because now it properly checks for datatypes
of all values and injects typecasting oprators accordingly. It also uses playerglobal.swf
for decompilation which requires on first AS3 opening to parse it. (Second AS3 opened
files should be faster)
It also uses limited caches - see point 3.
2) Ad "sometimes fail to create new classes"
If you encounter error regarding adding new classes, then you need to report it, tell us
exact steps you did,
then we may investigate it and fix.
3) Ad "second search query does not work immediately"
In 18.5.0 we introduced a maximum limit on cached items (defaults to 500). We need this to
not waste memory. After reaching this limit, old items are removed from cache. This may
result in second search to decompile files again.
You can modify cache parameters in advanced settings / limits / "Maximum number of cached
items per single cache". You can set it to 0 to unlimited caching. But beware, this may
use your memory a lot.
4) Ad "Newer versions of Ffdec also break the file when trying to inherit, v14.4.0 copes
better with creating new classes (without killing the file, and the new ffdec kills the
file or cannot create a class :/)"
Need to see exact steps how to reproduce on a sample SWF file.
5) Ad "Problem with lost settings"
Yes, if you switch to older FFDec version and back, you might lose your settings.
We use serialization of configuration objects and each object has serial version,
and if the stored data does not match the actual version, it does not unserialize.
From version 16.3.0 we started using fixed serialVersionUID field which should prevent
losing the configuration again.
But if you still use FFDec lower than 16.3.0, I can't do anything for you,
you will still lose your configuration after you switch.
Just do not use old versions, that's my advice.
State: new→opened