Jump to content
Search In
  • More options...
Find results that contain...
Find results in...


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Spirited

  1. Spirited

    JE to JMP

    I usually use C++ for things like this. Lower level Windows APIs are all in C/C++, so you'll have much finer control of memory and processes on Windows from C++. For example, if you wanted to create a new process in a suspended state and then modify its memory, you could use CreateProcess with a creation flag (CREATE_SUSPENDED). You don't have that option from C# ProcessStartInfo class. You can always use C# and use PInvokes, but I don't think it's an appropriate use for the language. Plus, if you want to inject a library as well, it means you'd be using two separate languages at that point (or trying to inject the .NET runtime which is extremely painful). Those are my two cents on the topic.
  2. Introduction Comet is a Conquer Online server project containing an account server and game server. The account server authenticates players, while the game server services players in the game world. This simple two-server architecture acts as a good introduction into server programming and networking. The server is interoperable with the Conquer Online game client, patch 5017 (not provided by this project). Discussion This project was initially created for an interview as a 3-week programming project. Now, it's a base source that I'm opening up to the community. Feel free to add to it and submit push requests. I'm mostly active on my GitLab account, but feel free to hit me up on Discord or Cooldown if I don't get to things soon enough. Links Source Control: https://gitlab.com/spirited/comet Readme: https://gitlab.com/spirited/comet/blob/master/Readme.md Issue Tracker: https://gitlab.com/spirited/comet/issues Storyboard: https://trello.com/b/tb8ChBlF/comet
  3. Spirited

    Comet - Open Source Conquer Online Server

    Yey!! I'm so glad. Let me know if you have any questions.
  4. Spirited

    Simple database Migration manager

    I was going to add the same. That naming convention is no longer recommended unless surrounding code already follows that naming convention. Generally, you want to learn and follow the guidelines of a language so that any project you go to with that language is consistent and easy to read and contribute towards.
  5. Spirited

    Simple database Migration manager

    Looks good. I think someone mentioned naming conventions on the other board. Here're the naming guidelines I follow for dotnet. Outside of naming conversations, I prefer nice interfaces for parameterized queries over database ORMs. Maybe I've worked in Go for too long though. I can see a system like this doing really well for plain MySQL.
  6. Spirited

    Conquer Online Floor Editor

    Introduction This command-line tool allows you to edit the floor cells of Conquer Online data maps (DMaps). Each floor cell contains a flag on if players are blocked from stepping on the cell, what the surface feedback effect is when stepping on the cell, and what the elevation the cell is on. Similar to the Portal Editor, this tool can be compiled using the golang compiler for Windows, Mac, or Linux. I wrote this tool at work during our end-of-sprint game time, so it's a bit rushed. If you have any problems using it, let me know. Just fyi though, it's a command-line tool, so you must use it from a command prompt window. Picture Downloads See my portfolio website for download links and source code.
  7. I have an idea for a simple project that uses a dynamic algorithm to find any breed color of horse in Conquer Online. The only issue is time and my inexperience in reverse engineering floating point arithmetic for the true horse breeding algorithm, and reverse engineering how the client matches RGB values to horse titles using delta offsets. If that's something that interests you, let me know. It would be really fun to see how the dynamic algorithm I have in mind would pan out.
  8. I remember getting the interface down to show the product of breeding the two horses in the client. Not accurately since we don't have the real breeding algorithm, but good enough. I'd have to look back and see what I did (I can't remember off the top of my head). What I'd like to do with this project is generate breeding formulas for any desired outcome.
  9. Spirited

    Conquer Facebook Client

    You could try finding the binaries or an existing private server for it and packet log things.
  10. Spirited

    Conquer Facebook Client

    So, it sounds like the TCP handshake is working fine if it's established a connection. My guess is that Crazy Tao might be closer to Conquer 1.0 Alpha than Conquer 2.0, so you could be already getting encrypted data. Do you receive any bytes from the client after it connects?
  11. Spirited

    Conquer Facebook Client

    I'm really not sure. I've never tried setting up that client with a server. You can try the legacy cipher.
  12. Spirited

    SRP6 for higher clients

  13. Spirited

    SRP6 for higher clients

    Higher patches like that have a deviation in the algorithm. I haven't had the time to reverse it yet, but it looks like a relatively simple addition? It'd be super nice if people contributed to the wiki. 😅
  14. Spirited

    Conquer Facebook Client

    Hm. These are pretty obscure requests. I'm not sure I can help in particular, but I know there was a private server for Crazy Tao. I think it was a binary though. 😓
  15. Introduction Before you start disassembling Conquer, it's important that you understand the basics of assembly. For a tutorial on Assembly Languages, check out Tutorials Point. They cover the basics pretty well. This guide will help you disassemble Conquer for the first time using Hopper Disassembler, which is a reverse engineering tool I use to translate compiler machine languages into higher-level assembly language. Hopper is a paid program; therefore, I will not be providing a copy through this thread. I recommend purchasing a license and would definitely never suggest searching for one of the many, easy-to-find, pirated copies out there. Environment Hopper can only be installed on Linux and Mac OS. Therefore, if you're using Windows, you'll need to create a virtual machine. For simplicity, I recommend using either Oracle VirtualBox or VMWare Workstation Player; both have tutorials for running either Linux or Mac OS in a VM. I use Ubuntu 18.04 with VMWare Player. If you need a tutorial, check out this video. Once your virtual machine is set up, install Hopper Disassembler and you're ready to go. Disassembling Conquer Now that Hopper is set up, download a Mac client for Conquer. All you need is the dmg file (you don't need to install it). After downloading the file, open it in 7-Zip. Navigate to "Conquer\Conquer.app\Contents\ConquerGameExe.app\Contents\MacOS". This path might be different depending on the client version you downloaded. Extract the ConquerGameExe file and open it in Hopper. Hopper will automatically detect the compiler, so don't change any of its analysis settings. After a few minutes, you should have analyzed assembly. See the picture below. You can search for classes and methods using the Procs tab. Give it a try with a packet name from the wiki. After finding a method, switch between views along the top bar. One particularly helpful view is the "Show Pseudo Code of Procedure" view. This shows the assembly in a C-like assembly syntax. It's not perfect, but it does help show the flow of logic. You can also search for text using the Strs tab. Once you find a string you're looking for (ex. Monster.dat), you can see all references to the string in the right panel. This can help a lot when trying to understand how files are read by the client. Conclusion That's really it. I'm definitely not as experienced as others when it comes to reverse engineering, but Hopper does make it easier for those who have assembly knowledge but no knowledge on the structure of the game client's assembly. This won't help you develop bots or hacks on Windows, but it is helpful when writing a private server. Happy disassembling!
  16. Spirited

    Client: Disassembling Conquer in Hopper

    Yeah, the logic isn't consistent. With packets that it only accepts from the server, you'll find the logic in Process most of the time. It depends though. The more complicated packets are harder to follow. You should try the example I used to get your feet wet. It's pretty easy to get the structure, length, and packet id for. You'll figure it out, I'm sure. It just takes patience and effort - not two things I want to put into it right now which is why I posted this tutorial. Lol. I've done enough of this stuff for a while.
  17. Spirited

    Client: Disassembling Conquer in Hopper

    That'd be very appreciated. So far, I've been the only one updating the wiki. 😓
  18. Spirited

    Guide: Client Downloads

    Introduction This guide helps you set up and configure the Conquer Online game client to connect to a private server. To get started, download a specific patch for the game below. If you're downloading a open source server project, match sure to match up the patch numbers correctly. If the patch doesn't exist in the list below, download a lower patched client and patch upwards using the provided patch archive. After you finish downloading the client, decompress it using 7-Zip. Configure Download the ConquerLoader launcher by Nullable and extract its contents to the client's directory. Make sure ConquerLoader.exe is in the same directory as Conquer.exe. It's common that anti-virus programs will incorrectly flag the launcher as a virus, so you may need to whitelist the executable. This is because the launcher uses code injection to redirect traffic to your private server. To configure its location, open LoaderSet.ini in Notepad and edit the IPAddress field. Some clients crash when using an internal or loopback IP address, so you may need to use your public IP address and set up port forwarding. Older clients may not encrypt Server.dat, a file in the same directory as Conquer.exe. If the file can be opened in Notepad, then you may edit the file rather than using ConquerLoader.exe. Here's an example edit for Server.dat on patch 4294 (below). Loopback IP addresses may not work depending on the patch. To bypass the "Run play.exe" error when running Conquer.exe directly, start the executable using "blacknull" as a command-line argument. You can provide command-line arguments using shortcuts or cmd. [Header] GroupAmount=1 Group1=GroupPic5 [Group1] ServerAmount=1 Server1=Meteor Ip1= ServerName1=Meteor HintWord1= Pic1=servericon33 Warning Some clients around patch 5002-5017 state that they contain a virus. They do not, this is a false positive. Do not start clients using start.exe on patches around 5022-5095. An antivirus program was added to the client that crashes Windows Vista and higher. Always run the clients using Conquer.exe or the provided launcher to avoid these issues. Downloads 4217 4267 4274 4294 4330 4343 4351 5002 5017 5065 5095 5127 5165 5187 5290 5355 5517 5615 6090 Archives: Mirror Installations: Mirror Patches: Official, Mirror (Recommended) Common Error Messages "Server maintenance. Please try again later!" Could not connect to the account server. If local, check that the internal IP address is correct. If remote, check your firewall and port forwarding settings. Restart the client if you change server.dat or the loader's IP address. You can check port forwarding at this website. "Connecting to the account server" If the client hangs here, then the MsgAccount packet isn't being handled correctly and the client is still waiting on a response. "Failed to connect to the game server. Please try again later." Check that your game server's port is being forwarded correctly using this website. If another player is getting this error and you aren't on your local box, then check that the IP address you send using MsgConnectEx is an external IP address and (again) that your port is being forwarded correctly.
  19. Spirited

    Jiang Hu Packets

    I'll check when I get home. Yeah, you need the Mac client. After opening the executable file from Conquer.app, it should start to automatically disassemble and analyze it. I can create a tutorial tonight, I think I'll have time.
  20. Spirited

    Guide: Client Downloads

    Unfortunately not. I don't bother with that since the internet archive can still show patch history. Is the official one still bugged? What patch are you looking for? Is this for Hopper? Because I have some Mac executables already extracted.
  21. Spirited

    Conquer Map Editor/Creator

    I think Conquer Online maps are small enough to load into memory. Maybe have a memory cache that can reload and optimize itself if on a low memory system? Anyways, you can always try converting files in parallel. It's likely a processor utilization issue more than a disk read limitation. What does your task manager look like when you run your program? What resources are you maxing out on? What are your system specs?
  22. Spirited

    Conquer Map Editor/Creator

    Aw, dang. What part of it was slow?
  23. Spirited

    File Manager - Encrypt/Decrypt Files

    It's not quite that simple... 😅 Here's the full cipher: https://gitlab.com/spirited/conquer/snippets/1840786
  24. Hi all. A few years ago, I did the research around converting maps for Conquer Online into plain text file systems that can be easily modified by a visual client editor or simple text editor. I started a command-line version of "Architect" to convert maps, but I'm a bit confused about the direction of the project. Overall, I'd really like to get more experience with client-side application development. Keeping Architect as just a command line tool doesn't really get me more experience in anything, nor is it great for the usability of the tool. The problem is, I'm not very experienced in what frameworks are used these days for cross-platform development. I'm thinking about using Angular and Typescript with Electron. That way, I can use a nice UI Framework with WebGL for the visual editor (if I get around to that). Otherwise, just allowing the window to do text editing for now. Again, I'm not very experienced with this, so I'd really appreciate the community's feedback. Thanks!
  25. Spirited

    UI Framework Discussion for Map Editor

    Just an update on this, I found a very interesting Golang replacement for Electron called Lorca. It utilizes the system's installed Chrome browser rather than embedding a custom build of Chrome, and extends a lot of Go's web interfaces for serving and binding to a web API. I might give it a try since that would also allow me to combine my command-line version of Architect into the same program and share the logic. I'm going to give myself a break for Christmas, but I'll get back into this in a few weeks. I'd be interested to hear what you all think about Lorca though. It looks pretty cool.

Important Information

By using this site, you agree to our Terms of Use.