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#971 forgotten assignment for increment in first line
Author: BeniBela
Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: AS3DecompilationObfuscated
State: closed
If the first line of a function is memberVariable++; it becomes _loc2_.memberVariable =
_loc3_; with an undefined variable loc3. E.g.:
trait method Qname(PackageNamespace(""),"onErrorHandler") dispid 0
method
name null
param Qname(PackageNamespace("flash.events"),"ErrorEvent")
returns Qname(PackageNamespace(""),"void")
body
maxstack 3
localcount 4
initscopedepth 5
maxscopedepth 6
code
getlocal_0
pushscope
getlocal_0
newfunction 8897
pop
jump ofs0011
divide
getlocal_2
hasnext
coerce_a
getlocal_2
coerce_a
ofs0011:dup
setlocal_2
getproperty Qname(PackageNamespace(""),"numTries")
increment_i
setlocal_3
getlocal_2
getlocal_3
setproperty Qname(PackageNamespace(""),"numTries")
jump ofs002a
inclocal 2
inclocal 2
getlocal_2
declocal 2
coerce_a
getlocal_3
ofs002a:kill 3
kill 2
getlocal_1
callpropvoid Qname(PackageNamespace(""),"stopPropagation") 0
getlocal_0
getproperty Qname(PackageNamespace(""),"numTries")
getlocal_0
getproperty Qname(PackageNamespace(""),"maxTries")
ifnlt ofs004d
getlocal_0
pushnull
initproperty Qname(PackageNamespace(""),"status")
getlocal_0
callpropvoid Qname(PackageNamespace(""),"load") 0
jump ofs0062
ofs004d:getlocal_0
getlex Qname(PackageNamespace(""),"STATUS_ERROR")
initproperty Qname(PackageNamespace(""),"status")
getlocal_0
getlocal_1
initproperty Qname(PackageNamespace(""),"errorEvent")
getlocal_0
getlocal_0
getproperty Qname(PackageNamespace(""),"errorEvent")
callpropvoid Qname(PackageNamespace(""),"_dispatchErrorEvent") 1
ofs0062:returnvoid
becomes
public function onErrorHandler(param1:ErrorEvent) : void
{
_loc2_.numTries = _loc3_;
param1.stopPropagation();
if(this.numTries < this.maxTries)
{
this.status = null;
this.load();
}
else
{
this.status = STATUS_ERROR;
this.errorEvent = param1;
this._dispatchErrorEvent(this.errorEvent);
}
}
Looks like turning on "Automatic deobfuscation" in settings solves the problem.
The question is whether the decompiler should handle this outside the deobfuscation mode
or not...
State: new→opened
Type: bug→question
Type: bug→question
Well, in a very old version where it did not do any deobsfucation, it could not show
anything. So there seems to be always some deobfuscation enabled
I don't know whether it's still related as flash is gone,
but this seems to be working in current nightly (1782).
I am closing this issue.
State: opened→closed
Type: question→bug
Type: question→bug