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!

Private Reverse Engineering DCR!?

Newbie Spellweaver
Joined
Jan 7, 2017
Messages
6
Reaction score
1
Why isn't there anything on here about reverse engineering DCRs? I see a whole bunch of releases that were created from the ground up, as you can't get the Lingo code from a DCR, but nothing about reverse engineering a DCR. I have client files for a game that uses similar technology to old school Habbo (Shockwave Habbo) I'm thinking of NodeJS back-end and JavaScript front-end, but I can't get the Lingo.
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
It's really hard to do. Caustik was working on something a bit and AmyIsBored (inactive) has a Lingo decompiler. But it's really hard to get the scripts back so not many people managed to. And yeah, the people that do either stopped retro stuff or won't share it. It would take so long to actually get Lingo back.

I asked a question on the reverse engineering stackexchange site: I got some tips but it still is hard. Also, I asked on some forums but I got no response. Goodluck finding something or somebody.
 
Newbie Spellweaver
Joined
Jan 7, 2017
Messages
6
Reaction score
1
I know Amy has a "Shockwave Decompiler" (let's call it that), she won't release it. She works on a game called MyVMK that she runs awfully, which is why I need to find someone, so that I can get rid of her once and for all.

The Lingo code is translated into machine code (a language that the computer can understand.) It's translated into machine code because the computer can't understand programming languages. Since it would be difficult to write programs in machine code, we use programming languages that use words from the English language. A compiler translates the programming language (Lingo) into machine code. When I open the DCR file in a disassembler, I can see the machine code, but I can't understand it. There has to be a way to translate the machine code back to Lingo. Also, machine code means 1s and 0s and assembly code is a mix of numbers and letters. I can view the DCR both ways. More info:

Here is some information on the Shockwave DCR file format:




Maybe it can help. I figured out the DCR is a compressed file with zlib, which means that once decompressed, it will be a larger file. I loaded it in Hopper Disassembler. It's too bad that I can't understand machine code or assembly code. Can anyone help?

"The .DCR format is useful for bypassing network detection, as no device/software I am aware of currently knows how to decompress this proprietary format." << NOT TRUE; SOLUTION BELOW!
 
Last edited:
Newbie Spellweaver
Joined
Jan 7, 2017
Messages
6
Reaction score
1
I already thought about that, I'd have to reverse engineer DIRRAPI.dll and IML32.dll. They are modules that Shockwave uses to handle parsing and rendering of DIR files. I am trying to uncompress the DCR right now.

When I tried to decompress the DIR file, I got:
flate: inflate: data: incorrect header check

It is compressed with zlib, so why can't these programs decompress it?
Oh, I found this:

The information on the DCR file format is all over the place, luckily, there is this thread.

Solution: You use a program called offzip ( ) to decompress the DCR. I don't know why says that there are no known tools to decompress the DCR.
 
Last edited:
Newbie Spellweaver
Joined
Jan 7, 2017
Messages
6
Reaction score
1
It outputs a .dat file, basically a text file. It doesn't exactly produce Lingo code all nice and clean, but that wasn't that objective. I want to build a NodeJS server and a HTML5 client. I see that no one ever finishes their projects on here. DCR is compressed with zlib, however offzip doesn't seem to uncompress the DCR and produce a DIR with all of it's contents. I didn't look up offzip on Google for more information on it (I'm doing that now) and I'll contact the creator.

More information:


Oh okay, first you use offzip to uncompress the DCR, then you use packzip to inject the uncompressed data back into the DCR, which would produce a DIR. I wish it was that simple, I don't think packzip allows no compression when injecting back. Trying now...
 
Last edited:
Joined
Jun 23, 2010
Messages
2,318
Reaction score
2,195
All compressed files have some sort of header which contains the original file size. This is needed, in this case zlib, to uncompress the remaining data to its original state.

For example Flash has 3 bytes to tell what sort compression, 1 byte the version and then a 32bit integer for the original filesize. After this part all the data is compressed.
 
Newbie Spellweaver
Joined
Jan 7, 2017
Messages
6
Reaction score
1
All compressed files have some sort of header which contains the original file size. This is needed, in this case zlib, to uncompress the remaining data to its original state.

For example Flash has 3 bytes to tell what sort compression, 1 byte the version and then a 32bit integer for the original filesize. After this part all the data is compressed.

EbdAfUb - Reverse Engineering DCR!? - RaGEZONE Forums

More information:

"The positive thing of zlib is that the data you extract is exactly the expected data because it has a CRC at the end to avoid false positives. So what you get from offzip -a is what's there. I guess some of them are raw images but that's not my field."

Okay, so whatever DAT files that come out of "offzip -a example.dcr" is exactly what it is uncompressed.
 

Attachments

You must be registered for see attachments list
Last edited:
Joined
Aug 10, 2011
Messages
7,401
Reaction score
3,299
Post some screenshots of whats in the dat files (Preferably the headers).

Maybe there are a couple .pngs in there that just need to be renamed to .png?

And I don't think you will be able to get the original code from it. I don't think DCRs are compiled in the same way as SWFs meaning that it is probably compiled to CPU instructions or VM instructions. (Like C/C++). So see if you can find some more information about that. I know information is limited but I feel its probably out there somewhere.
 
Newbie Spellweaver
Joined
Jan 7, 2017
Messages
6
Reaction score
1
Post some screenshots of whats in the dat files (Preferably the headers).

Maybe there are a couple .pngs in there that just need to be renamed to .png?

And I don't think you will be able to get the original code from it. I don't think DCRs are compiled in the same way as SWFs meaning that it is probably compiled to CPU instructions or VM instructions. (Like C/C++). So see if you can find some more information about that. I know information is limited but I feel its probably out there somewhere.

I already saw the headers of each DAT file and I already know what's contained in the DCR. I used an application called "File Juicer" to extract the actual content and it can decompress DCRs too. I have already accomplished my goal. DIR files are compressed when exported as a movie, that is all. I already found all the information I can and it's listed here.
 
Back
Top