
Snrrrub
Member-
Posts
80 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Events
Everything posted by Snrrrub
-
I just did a quick check and it seems that Continuum does indeed check the packer code. Another option might be to write a loader - just load the packer and the (unpacked) Continuum binaries in the right place in the address space and jump to Continuum's entry point. No data execution, no packer/Continuum modifications - Continuum shouldn't complain. -Snrrrub
-
Allow me to set the record straight about Continuum and DEP. DEP (Data Execution Prevention) is available on Windows (XP SP2+) systems if you have a processor that supports the NX bit (No eXecute). There's also software-enforced DEP but that's only for system binaries so I won't go into that here. By default, DEP is only enabled for system binaries and other apps that opt-in to be protected. It's possible that DEP is enabled for all applications on your machine if the distributor (e.g. Dell, Gateway, etc.) modified the default Windows install. Why does Continuum trigger DEP while other applications don't? Because Continuum uses a packer that executes code in data pages, triggering DEP. Continuum itself never executes anything in data pages. As a side note, it may be possible to repack Continuum with a modified PeX that 'VirtualProtect's the allocated memory with PAGE_EXECUTE_READWRITE. Doing so would solve all of the DEP issues that people are having since the pages wouldn't have NX set. I don't remember off the top of my head whether the Continuum startup sequence checks the packer code integrity so this approach could potentially fail but that's fairly easy to test. If someone has a bit of spare time and wants to take this project on, I would certainly help out in every possible way. -Snrrrub
-
Hmm, I didn't think SVG would be such a big problem. Basically I'm looking for the logo in a vector format so that I can scale the image and use it in a number of places (installer, app icon, taskbar, etc). Static (not animated) Flash movies are fine too (as long as you're not importing BMPs, JPGs, or PNGs) but I'm pretty sure you can export them to SVG. Using a tool like VectorMagic would pretty much defeat the point of having a vector format. Perhaps there's a chance for collaboration? If you have a good logo idea but you haven't done any vector graphics, maybe you can find someone who can create a vector version of your logo? I'd be more than happy to credit all collaborators. Alternatively, I'll take PNG but I'll need it in a whole bunch of sizes (all square dimensions, ranging from 128x128 down to 16x16). I hope this makes it easier for people to dive in and make some cool logos! If there are any other barriers, let me know and I'll see what I can do to make it easier. -Snrrrub
-
Patching after unpacking won't help in this scenario - the executable checksum will be wrong so you won't be able to log in. If the executable is modified in any way in memory, it will abort silently (if the modification happens before the executable is uncompressed), tell you that a virus has corrupted the executable (if modification is after uncompressing but before displaying the app window), will try to update to a "new" Ctm version due to checksum mismatch (if modified after displaying the app window), or kick you off the server due to executable checksum mismatch (if modified when you're in a zone). In other words, don't mess around with hacking the executable if you expect to log in to a zone with it. The problem is likely with DEP or Kaspersky touching some part of the executable's memory even though you're telling it not to. If you have a debugger attached or you have a system level debugger installed (e.g. WinDbg, SoftICE, etc.) you will also see this problem. Try uninstalling Kaspersky and stopping all related services. Hope that helps and saves you a bit of time. -Snrrrub
-
I've just about finished writing a SubSpace-related application and I'm looking for a logo before I make the release. So what we have on our hands, here, is a good, old-fashioned logo design compe!@#$%^&*ion! The application is called "Starlight" (a semi-intentional reference to Muse) and the logo should try to reflect that somehow. I won't give away the details of what the application *does* so that there can be more variation in the logo design. Here's the low-down: 1) Logo must be in .svg format 2) Transparent background 3) Logo will be used as a window icon so it should be visible/recognizable at 16x16 4) Post the logos on this forum - it's a good way to get feedback What do you get in return? All the world's fame and fortune! Your name/email/website in the credits and whatever else you can negotiate. :-) The contest will run until next Monday (or longer if absolutely necessary). Let's see some crazy logos! -Snrrrub
-
How is this topic in General Development? And how is it important enough to be sticky?
-
Hey Kirk! Funny thing is that I'd written the oracle all those years ago when I was chatting with you about the idea and it just now comes to some practical use. ;-) Actually, I've got it running on my Linux box and updated to Ctm 0.40 so that's why there was a bit of a delay between starting this topic and releasing the oracle out in the wild. Doc, I'm really glad to hear that your API has added support for it! I'm curious: what warnings is your library generating? It seems that Ctm has a bunch of new packets that I haven't seen since the last time I was messing around with it and the errors may give some hints. I should also point out that if you want to maintain a connection with the server for longer than 2 mins without the security checksum kicking you out, you'll want to send back at least the EXE and map checksums. I'm sure you can find the map checksum code all over the place and you can use the oracle for the EXE checksum. I'm wondering if zone hosting is still a problem these days? I'm considering donating some CPU time and bandwidth on my server and I'm trying to figure out whether it's worth the effort. If there's enough interest I'll definitely help out. What's the hosting landscape these days? -Snrrrub [edit] Doc: were my explanations, code, and specifications clear or were there ambiguities? I'd like to improve them if there are any deficiencies. Thanks! [/edit]
-
I just wanted to update everyone on the do!@#$%^&*entation. I had put up some code for Continuum's encryption and decryption routines a while ago but now I've also got a service up and running for 3rd party clients to use the Continuum encryption. That means your chat and game clients don't have to be stuck with the SS encryption and you can now use the Continuum encryption (and protocol!) in your own apps. The details are available on my SubSpace project page under 'Encryption' (the 'Oracle' section). Thanks for the offer, PoLiX. I actually have a backup copy myself so don't worry about maintaining it. -Snrrrub
-
I've started putting up some of the information I gathered about SubSpace and Continuum over the years on my website. There are also some programs (with source) that could be used for reversing if anyone is still looking into the details of the game. For those who would find these sorts of documents/tools useful: please be responsible and use whatever I provide for developing useful applications (e.g. arena bots, clients, etc.), not cheats or hacks. http://sharvil.nanavati.net/projects/subspace/ If there are any omissions, errors, or requests for further information, please email me (click my name at the bottom of any page). -Snrrrub
-
If the DLLs are loading then you've already gotten past the protection in the packer. The DLLs can only be loaded after the import table gets reconstructed near the end of the second phase. The problem, then, is in the executable. I can verify that the packer is indeed a modified version of PeX. Anyway, I'm incredibly skeptical about the entire Wine project. The lack of regression between releases makes it a rather useless peice of software. -Snrrrub
-
These have been present since SubSpace, actually, and aren't really meant for extrernal use. For example, if you put a prize or brick tile, you can't specify its parameters (e.g. prize type) because the data structure !@#$%^&*ociated with it can't be initialized from the map data. -Snrrrub
-
The content isn't changing... just the base The first printout is in base 16 and the other is in base 10. -Snrrrub
-
Well the reliable packet structure looks right... so the server should send you an ACK at the least. Since you're not getting an ACK, I'm !@#$%^&*uming the encryption code is messed. You can find out for yourself by disabling the encryption (set the enc. key to 0 in connect packet) while you're testing/debugging (recommended). If the server replies when the encryption is off but not when it's on then you've probably found your problem. -Snrrrub
-
That's because your reliable ID should start at 0 and not 1. Reliable packets are handled in the order in which they are received and since reliable ID 0 has not been received, ID 1 cannot be processed. Instead of sending 0 0x3 0x1 0 0 0 as the header, send 0 0x3 0 0 0 0 for the first reliable packet header and you're set. -Snrrrub
-
Well either the packet isn't decrypted or it's not decrypted properly. You can't just look at the packet type bytes and say that it's been decrypted properly because they're not encrypted in the first place. The fact that you're getting a realiable ID that's ridiculously huge means that the packet (as printed) is not valid. As for the code, I'm not sure what the purpose of "WriteUint32to8" is... and I don't know how it's implemented either so I can't comment on it. When you receive a packet, you decrypt the whole thing once (including any reliable headers) and that's it. -Snrrrub
-
It looks like you're forgetting to either encrypt/decrypt the packets... or you're printing out the incoming packets at the wrong time. Are you encrypting the outgoing packets correctly? Are you decrypting the incoming packets correctly? Are you printing out the incoming packets AFTER decrypting? -Snrrrub
-
There are a few issues I noticed off-the-bat. First, reliable packets have a 6-byte prefix of the form: 0x00 0x03 Secondly, you should probably make the printout a little bit nicer by AND-ing the byte you're outputting with 0xFF so that it doesn't print stuff like 0xffffffa8 for negative values. Lastly, you should ALWAYS zero out your structure before setting the values. SomePacket myPacketStruct; memset(&myPacketStruct, 0, sizeof(SomePacket)); // Now do stuff -Snrrrub
-
The login packet has a length of 101 bytes total, not 99. Your last "unknown" field is off by 4 bytes: it should be 16 bytes long not 12. You probably want to send the login packet reliably as well. -Snrrrub
-
Use enc/dec of source by Snrrrub used LogicBot
Snrrrub replied to emileej's topic in General Discussion
My code can be used freely for whichever app as long as some credit is given in some external location (e.g. readme). -Snrrrub -
No, it's not sent as a string. Basically, SubSpace uses UDP datagrams for communication and each hex digit pair you see in the docs is one byte in the datagram. So when I said your packet looks like: 00 01 EF BE AD DE 01 00 I mean that the bytes are arranged that way in the datagram. That is, 0x00 is the first byte, 0x01 is the second byte and so on. As far as code goes, you might have something like: Packet p; p.appendByte(0x00); p.appendByte(0x01); p.appendInt(0xDEADBEEF); p.appendShort(0x0001); Hope this helps. -Snrrrub
-
No, the means that a required field called "Key" is 4 bytes long. All multi-byte fields are in little-endian byte order so if your key is: 0xDEADBEEF then your packet would look like: 00 01 EF BE AD DE 01 00 Note that 0xDEADBEEF is a negative integer and the last 01 00 = encryption type 0x0001 in little-endian byte order. The key sent in the connection request is a randomly generated integer less than 0. -Snrrrub
-
Hey pyxlz, just thoguht I'd chime in and say "keep up the good work" You're getting there... and remember, the only thing that matters is that you have a good time with the project. Cheers, Snrrrub
-
The whole idea behind the scientific method is that scientists build a model upon what they believe the universe is based. This model is based on observations and hypotheses, and is described mathematically. These models help us every day by allowing us to predict the outcome of other phonomena that have not yet been observed. When the model consistently and accurately predicts such phenomena, it is said to be "good". If it fails to accurately make such predictions, it is modified until it is can be considered good. So do we really "know" any laws? Not really. We have no derivation for Newton's Second Law or for Schrodinger's Equation. But does it matter whether we know something to be true if what we think we know is good enough in our realm of experience? Remember boys and girls, there is no absolute truth when it comes to science. It's all just a part of our imagination. It's just a really USEFUL part of our imagination. -Snrrrub
-
Hmm, that's pretty funny. I guess Priit changed the protocol on me... or something. Oh well. I guess you'll have to wait (perhaps indefinitely) for the next SnrrrubSpace. I know that works. hehehe... I'm a -*BAD WORD*- -Snrrrub
-
Yes, that's because the version you downloaded was missing those files. I had updated the distro a day or two later to include those files but I guess some people still have the old files. The reason the !@#$%^&*ertion failed when you imported those files from SS/Ctm is because of BMP compression. Apparently SDL doesn't support loading compressed bitmaps. If you REALLY want to get that version to work, you can re-save turret.bmp and turret2.bmp in something like Photoshop. There will be an option to save it as a compressed bitmap (I think in photoshop it's a checkbox) and it should work just fine. Of course, I don't think you're going to get much use out of that version of SnrrrubSpace but I guess it's at least something different to look at. -Snrrrub