Changed this thread to a general Habbo cracking/info thread! Downloads: Cracked 'new' SWFs: RELEASE63-201203151102-360144060 Feel free to request more Tools: Old obfuscation remover Information: Obfusctating used by Sulake: In old SWFs: In the old SWFs, it is very easy to locate and remove the obfuscation. It is simply some AVM code which never get called, but it confuses the SWF decompiler to show the unused code which causes strange AS3 code to show in the SWF decompilers. Here is an example from a decompiled class with the obscufation marked in red: Code: trait method QName(PrivateNamespace("HabboMain", "HabboMain"), "dispose") method name "HabboMain/private:dispose" refid "HabboMain/dispose" returns QName(PackageNamespace(""), "void") body maxstack 3 localcount 1 initscopedepth 9 maxscopedepth 10 code getlocal0 pushscope findpropstrict QName(PackageNamespace(""), "removeEventListener") jump L10 setlocal1 modulo pushfalse nextvalue getlocal2 lshift L10: getlex QName(PackageNamespace("flash.events"), "Event") getproperty QName(PackageNamespace(""), "ADDED_TO_STAGE") getlocal0 getproperty QName(ProtectedNamespace("HabboMain"), "_-0EB") callpropvoid QName(PackageNamespace(""), "removeEventListener"), 2 findpropstrict QName(PackageNamespace(""), "removeEventListener") getlex QName(PackageNamespace("flash.events"), "Event") getproperty QName(PackageNamespace(""), "ENTER_FRAME") getlocal0 getproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-20T") callpropvoid QName(PackageNamespace(""), "removeEventListener"), 2 getlocal0 getproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-2GU") jump L30 nextname increment multiply_i pushtrue hasnext pushtrue L30: iffalse L55 getlocal0 getproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-2GU") getlex QName(PackageNamespace("flash.events"), "Event") getproperty QName(PackageNamespace(""), "COMPLETE") getlocal0 getproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-0L1") callpropvoid QName(PackageNamespace(""), "removeEventListener"), 2 getlocal0 getproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-2GU") getlex QName(PackageNamespace("flash.events"), "ProgressEvent") getproperty QName(PackageNamespace(""), "PROGRESS") getlocal0 getproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-1Be") jump L51 multiply_i rshift lessthan pushtrue lessequals istypelate L51: callpropvoid QName(PackageNamespace(""), "removeEventListener"), 2 getlocal0 pushnull initproperty QName(PrivateNamespace("HabboMain", "HabboMain"), "_-2GU") L55: getlex QName(PackageNamespace(""), "parent") iffalse L60 getlex QName(PackageNamespace(""), "parent") getlocal0 callpropvoid QName(PackageNamespace(""), "removeChild"), 1 L60: returnvoid end ; code end ; body end ; method end ; trait The "jump" keyword is the same as goto in C#, in other words it jumps over all code until it gets the label(L)specified. YOu can see that the grey code is not used at all, so all the red and grey code can safetly be removed. In new SWFs: (RELEASE63-35336-34886-201108141653_b28e2fe29de7c1bcbead98a6d809730e+) This obscufation isn't that much more complicated, but it requires a lot more work. I'm now 100% sure how this works, but I think I've found it! In all obscured methods, it's defined 2 bools. These are used with other methods to create "fake ifs". By fake ifs I mean ifs which always is true or false. Code explains better than words, obscuring in red: Code: trait method QName(PackageNamespace(""), "_-23m") method refid "_-0J9:_-47R/_-23m" returns QName(PackageNamespace("_-0Vl"), "_-3Me") body maxstack 4 localcount 3 initscopedepth 5 maxscopedepth 6 code pushfalse pushtrue setlocal1 setlocal2 Local 1 is TRUE Local 2 is FALSE debugfile "k" getlocal1 dup iftrue L11 Always true jump to L11 pop getlocal1 convert_b L11: iffalse L13 Never true, ignore debugline 26 L13: getlocal0 pushscope getlocal2 iftrue L18 Local 2 = false, ignore.. debugline 28 L18: getlex QName(ProtectedNamespace("_-s7"), "_-2t0") getlex QName(PackageNamespace("_-0Vl"), "_-3Me") astypelate returnvalue end ; code end ; body end ; method end ; trait