#516 AS3 p-code: Editing namespaces with null names (index 0)
Assigned to: JPEXS
> What steps will reproduce the problem? Swf are attached. Go to: Scripts > states > PlayState > (ctrl + f) tick Scroll down till you come to Bl.isKeyJustPressed(80) then on P-Code "ofs015a:", add following code. getlex Qname(PackageNamespace("blitter"),"Bl") pushbyte 88 callproperty Qname(PackageNamespace(""),"isKeyJustPressed") 1 iffalse ofs015a ofs015a: replace the two of "ofs015a" that already exists in the P-code to "ofs016a" Then save it to the swf. Play the swf in "Projector content debugger", can be downloaded at http://www.adobe.com/support/flashplayer/downloads.html You need to register at the game site, so I give out free account for it. Login: firstname.lastname@example.org Password: jnj3jdp1oee After running the debugger, i get these errors: http://i.imgur.com/XWr7IeP.png http://i.imgur.com/FYIkaVF.png I have never had errors like these before, and I know I do everything correct. It seems like FFDec is compiling the code wrong. > What is the expected output? No errors. > What do you see instead? Errors > What version of the product are you using? On what operating system? 1.8.1u1 Windows 7 x64 > Please provide any additional information below. Attach the file you have problem with if neccessary. If you do not want to publish files YOU CAN CHANGE VISIBILITY TO PRIVATE
freegame.swf (3,182 KiB)
The swf thats I'm trying to change ofsets on, the code is on Scripts > states > PlayState > (ctrl + f) tick And the images what I try to change. http://i.imgur.com/LqWxt6B.png
freegame.swf (3,190 KiB)
Looks like, open the first swf in FFDec, then open a random part and edit and save, and save the swf makes the swf corrupt. I have no idea why this happens. But it would be gold if this can be fixed.
Assigned: → honfika
Assigned: → honfika
So you are only swapping the label names? It has no sense, you can call them as you want. When you swap them, the result will be the same, but ok, it should work. And in the first example the parameter was 80, but in the same message entry the pushbyte has parameter 88. In the original swf it is 80. I modified it to 88, saved the file, and it was working. Please try to repoduce with the latest nightly build.
I still get the same issue. If I open FFdec. Then open a random part and edit and save. Then save the swf, it gets corrupt. As you can see in the picture. http://i.imgur.com/zcohr9l.png
Please be more specific. What are your current settings? Is deobfuscation enabled. I did the following steps: - open original swl - open ui.brickoverlays.CoinProperties - changed the following text: "Coins to collect to open door"; to: "Coins to collect to open door2"; - save in ASM panel - save swf (in ribbon) then i opened the swf: "flashplayer_12_sa_debug.exe freegame.swf" There was no error message. And earlier i've modified Bl.isKeyJustPressed(80) to Bl.isKeyJustPressed(88) There was no error in this case, too. So i need your current configuration and the exact steps to reproduce. (not only "open a random" thing)
Assigned: → JPEXS
The problem is in privatenamespaces handling, I'll try to fix it...
It is fixed in the repository. We will release nightly build soon. This bug is critical I think, thank you very much for reporting.
Title: →AS3 p-code: Editing namespaces with null names (index 0)
Nightly build released. This should be fixed in it.
Thanks. It works now.