+ update 2020: WARNING - support of the decompiler is now VERY LIMITED. There are no active developers. This means we will NOT develop new features and/or fix most of bugs. We left the tracker running in case somebody from community would like to work on it. Sorry for the inconvenience.
State: new new: Initial state. As long as issue is in this state, the work on the issue has not yet begun. opened: Opened state means developer started working on the issue. Feature/Fix will probably be in the next release. postponed: This means developer is not working on it now, for some reason it cannot be implemented now. Issue may be opened again in the future. upgraded: Issue is in upgraded state when developer made changes to the program and new version was released. closed: This means the user is satisfied with issue results and no more changes are needed. invalid: These issues cannot be solved. ignored: Developer decided to take no action on this issue. returned: Program changes were made but user is not satisfied and returned the issue.
> What steps will reproduce the problem?
With the given file:
Tools -> P-code deobfuscation -> Restore flow control OR remove traps
Edit something so that FFDec recognizes that stuff has been changed. (This is another bug:
If you go straight to saving after deobfuscating, it won't save the changes.)
> What is the expected output? What do you see instead?
The expected result is correctly deobfuscated code. The actual result is a broken SWF.
(The SWF just shows a black screen.)
> What version of the product are you using? Is it "nightly build"? Which operating system
do you have?
I am using version 6.1.1 on Windows 7.
> Please provide any additional information below. If the problem is related to a SWF
file, attach it here, otherwise we can't help you.
I have found one example of code that was incorrectly deobfuscated: scripts -> data ->
class_10 -> getDay()
I would expect the result to look like this:
var _loc1_:* = this.method_79();
var _loc2_:Number = Math.round(_loc1_ / 24 / 60 / 60);
but it actually looks like this:
var _loc2_:Number = Math.round(false / 24 / 60 / 60);