Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Habbo.swf original source(structures and names, no code)

RaGEZONE VIP
[VIP] Member
Joined
Aug 13, 2014
Messages
121
Reaction score
239
@eMagic: unfortunately the newer releases aren't useful, but thanks for trying to help. The older ones weren't properly obfuscated, so I can reverse them and get an unobfuscated copy of the client's source code, which would shed extensive light on how most (if not all) the game functions are implemented.

I'll also need access to an iOS device that's on iOS 7 (or possibly 8, but I'm not 100%) which has been jailbroken, if that's something you can help with, I'll keep you posted. The .IPA is encrypted and it needs to be dumped from memory on an actual device that's capable of running it.
This seemed to spit out some stuff(can extract .ipa):
How to peek into air app?
TheOleg - Habbo.swf original source(structures and names, no code) - RaGEZONE Forums


Extract "HabboAir", it should contain the 'native' code, I wouldn't know how to read from it though :[
 
Last edited:
C# / Java Programmer
Joined
Jan 1, 2007
Messages
346
Reaction score
177
This seemed to spit out some stuff(can extract .ipa):
How to peek into air app?
TheOleg - Habbo.swf original source(structures and names, no code) - RaGEZONE Forums

That's the payload file inside the app itself, which actually has all the useful poop in it. Hmm. I might see if I can repack it and get it working.

Never mind, supporting files are totally different between versions. Can't repack. :(

HabboTablet.swf is the stub file, it's got all the unobfuscated objects, but no code. The code is cross-compiled to native ARMv7 (v9?) instructions, that's held inside HabboAir, which is annoying encrypted. IDA Pro can handle it once it's been decrypted by an iOS device but without the .ipa packaging I don't know how to actually decompile it. I know someone who might know how, though. I'll ask him later.

Btw, you can't put the SWF through AS3 Sorcerer / SoThink, the AIR bytecode is slightly different than standard AVM bytecode. ASV supports it (kind of), though.
 
RaGEZONE VIP
[VIP] Member
Joined
Aug 13, 2014
Messages
121
Reaction score
239
Yo, how did Oleg just get the names, they're located in the ABC blocks but that is what gets translated to ARM right? Did I misinterpret something man
 
C# / Java Programmer
Joined
Jan 1, 2007
Messages
346
Reaction score
177
Yo, how did Oleg just get the names, they're located in the ABC blocks but that is what gets translated to ARM right? Did I misinterpret something man

No worries, it's easy to get confused. The SWF is a stub, it's just class and method names, and the ARM native instruction stack contains pointers to the SWF stubs. No idea why they do it that way, but we don't question Adobe. They've got enough problems as it is.

ASV can pull the ABC blocks apart in these SWFs, and read out translated stubs as AS3 code. You could probably do it manually also, not sure. I wrote some tooling that helped with it a few months ago when Oleg first sent me this stuff but I'm next to certain I've since formatted the disk it was on. v_v

The only way to get the actual AS3 code back from this is to decrypt it with an iOS device first (which requires the entire .ipa file), then run the decrypted memory dump through some reversing tools. Or do it the old-fashioned way with IDA Pro and just trace the instruction stack.
 
Junior Spellweaver
Joined
Oct 26, 2014
Messages
176
Reaction score
117
Dissembled to pure Binary...
Found Names:
MuteAllInRoomComposer
GetEmailStatusComposer
RemoveSaddleFromPetMessageComposer
ForwardToARoomPromotedMessageComposer
CustomizePetWithFurniComposer
SetRelationshipStatusMessageComposer
GetNowPlayingMessageComposer
ExtendRentOrBuyoutStripItemMessageComposer
Game2RequestFullStatusUpdateMessageComposer
GetRentOrBuyoutOfferMessageComposer
ShoutMessageComposer
DeletePendingCallsForHelpMessageComposer
LeaveQueueMessageComposer
GetGuildCreationInfoMessageComposer
GetConcurrentUsersGoalProgressMessageComposer
Game2QuickJoinGameMessageComposer

LibraryProgressEvent ~ Don't know what this is for.
DisconnectReasonEvent
PingMessageEvent
RoomEngineToWidgetEvent
UserChangeMessageEvent
FurnitureAliasesMessageEvent
RoomSessionPropertyUpdateEvent
RoomSessionQueueEvent
RoomSessionPresentEvent
RoomSessionDimmerPresetsMessageEvent
GetGuestRoomResultEvent
FloorHeightMapMessageEvent
ProductOfferEvent

I'll keep updating when I find more...
 
Last edited:
jā€™aime ma famille
Joined
Aug 24, 2012
Messages
603
Reaction score
300
Dissembled to pure Binary...
Found Names:
MuteAllInRoomComposer
GetEmailStatusComposer
RemoveSaddleFromPetMessageComposer
ForwardToARoomPromotedMessageComposer
CustomizePetWithFurniComposer
SetRelationshipStatusMessageComposer
GetNowPlayingMessageComposer
ExtendRentOrBuyoutStripItemMessageComposer
Game2RequestFullStatusUpdateMessageComposer
GetRentOrBuyoutOfferMessageComposer
ShoutMessageComposer
DeletePendingCallsForHelpMessageComposer
LeaveQueueMessageComposer
GetGuildCreationInfoMessageComposer
GetConcurrentUsersGoalProgressMessageComposer
Game2QuickJoinGameMessageComposer

I'll keep updating when I find more...
Release the disassembled pure binary!
 
Skilled Illusionist
Joined
Mar 26, 2013
Messages
371
Reaction score
280
Still work on this ?

I located the start of flash data on HabboAir
feb5221a5f31b3a68743297f03565e1e - Habbo.swf original source(structures and names, no code) - RaGEZONE Forums


but how locate the end of file ? I need apply ZLIB decompress after removing all before CWS
 

Attachments

You must be registered for see attachments list
RaGEZONE VIP
[VIP] Member
Joined
Aug 13, 2014
Messages
121
Reaction score
239
Still work on this ?

I located the start of flash data on HabboAir
feb5221a5f31b3a68743297f03565e1e - Habbo.swf original source(structures and names, no code) - RaGEZONE Forums

but how locate the end of file ? I need apply ZLIB decompress after removing all before CWS

The next 5 bytes(after "CWS") should be readable, it consist of the Version(1), and FileLengh(4). I'm not sure if you can find the end of the SWF without decompressing it first.

Edit: FileLength is the total size of the uncompressed SWF, it includes the header(8 bytes).
 

Attachments

You must be registered for see attachments list
Joined
Aug 10, 2011
Messages
7,398
Reaction score
3,301
Still work on this ?

I located the start of flash data on HabboAir
feb5221a5f31b3a68743297f03565e1e - Habbo.swf original source(structures and names, no code) - RaGEZONE Forums


but how locate the end of file ? I need apply ZLIB decompress after removing all before CWS

Try decompressing the whole file and check again.

EDIT: probably doesn't work.

If you can send me the file I can see if I can decompress it.
 

Attachments

You must be registered for see attachments list
Last edited:
Newbie Spellweaver
Joined
Jan 18, 2016
Messages
12
Reaction score
14
Does somebody care to explain why these original names are of such big importance? I fail to see it myself.
The potential of having access to see how everything is handled? No, that's not important at all...
The original names would be easier to read instead of _-Ss
 
Joined
Apr 24, 2013
Messages
1,682
Reaction score
1,124
The potential of having access to see how everything is handled? No, that's not important at all...
The original names would be easier to read instead of _-Ss
What can the community achieve when the full source would be visible? I'm just curious since most of the things said in this thread sound like another language to me.
 
Newbie Spellweaver
Joined
Jan 18, 2016
Messages
12
Reaction score
14
What can the community achieve when the full source would be visible? I'm just curious since most of the things said in this thread sound like another language to me.
We would be able to make every single packet proper functional, without having to packet log everything (for this revision), which I'd assume is a rather new revision.
 
Newbie Spellweaver
Joined
Jan 18, 2016
Messages
12
Reaction score
14
I see, thanks for the explanation. Definitely going to keep an eye on this thread then. hahaha
Also, we would eventually be able to make in-game logic a lot better, since we'd have a better understanding on how it's handled. :):
 
  • Like
Reactions: AWA
Joined
Aug 10, 2011
Messages
7,398
Reaction score
3,301
We would be able to make every single packet proper functional, without having to packet log everything (for this revision), which I'd assume is a rather new revision.

You're talking nonsense.

Its not about the packet handling, its about a way to crack another platform and potentially use that also for retro's. Atleast thats what I'd like to see. Anything else in this is quite useless. Same server, same packets. Just a different interface.

I can already make every packet functional without packetlogging. Thats how I build almost everything in Arcturus.
 
Back
Top