No announcement yet.

Project Artemis

This is a sticky topic.
  • Filter
  • Time
  • Show
Clear All
new posts

  • Project Artemis

    For some time now (several years, off and on), GSHI administrative staff and several select members of the scene have been working, in secret, on something tentatively called Project Artemis: a hacking system for the Playstation 2. The primary goal of this project is to allow users to create, or hack, their own codes, using RAM-dumping, dump comparison, constant memory writes for testing, breakpoints, and as many other tools as feasible.

    The project is far from complete. There have been quite a few stumbling blocks, and some impressive progress has been made (though, without consent from its authors, not all of it can be shown here immediately - an issue I'm hoping will be resolved in the next few days). Through several primary coders (Sang123, Hit n' Run Games, misfire, Shyam Narain, Xerxes Technologies, cYs Driver), it has been determined that...

    A: Hiring a company to design such a system will result in either paying tens of thousands of dollars, or ending up with a company that cannot complete the project, and...

    B: Hiring a solitary coder, such as a skilled member of the scene, will eventually result in the coder being overwhelmed.

    Hence, lacking the necessary funds to hire a coding group or company adept enough to complete the task at hand within a reasonable amount of time, we have made the best decision possible, with Artemis, GSHI, and the scene in mind: to bring the project out of the darkness, and into the realm of open source.

    If anyone is interested in contributing, feel free to make a post, if only to say so. We will continue to chronicle our progress, research, and thoughts here. There will soon be a SubVersion repository in play; if you'd like access, let us know. I'll begin making our work available in this thread, and other threads in this forum entitled "Artemis: [Subject]".
    I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

  • #2
    For interest's sake, cYs Driver's original, openly available proof-of-concept PS2 cheat engine can be referenced here:

    ...and the download, whose original link has since become dead, can be found here:

    Keep in mind that this source must be compiled using the PS2SDK, a pre-built, updated, fixed version of which can be found in this forum

    Thanks, of course, go out to Driver, for this very clever piece of work, and to misfire, for his invaluable pointers and advice.
    I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...


    • #3
      From this description it's not clear what you're trying to create. Certainly TSR-based patching mechanisms are not new, so details about what's special here would be interesting.

      I personally prefer static patching for permanent changes because it's somewhat easier to control what memory gets clobbered.


      • #4
        Apologies for vagueness: project specifications will be released shortly. For now, suffice it to say:

        Project Artemis is an endeavor to create a PS2 application, using the unofficial PS2SDK (a pre-built version of which can be found in this forum), that will allow a user to dump PS2 memory repeatedly during game play (either to a USB flash drive, or remotely via a network cable to a PC), so as to compare these dumps (either on the PS2 itself, or remotely via a network cable to a PC, using a compare utility), and the ability to force specific memory addresses to hold specific values (in order to test results of searches). At least, these are the goals for version 1.0.

        Version 2.0 will likely be a full-fledged hacking system, with breakpoints, as well as a cheat system, similar to the GameShark Pro for the PSX.

        As for your site, it looks quite interesting

        I'll have to take a more detailed (and translated) look a little later.
        I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...


        • #5
          There's been a few clever hacks using Gameshark-style codes that allow arbitrary memory dumping to a memory card. The idea is pretty straightforward: modify parameters to the I/O APIs. The same thing could be done with minor modifications to that sample code in this thread. Or even static patching again.

          As far as debugging on the PS2 hardware ... the need is dwindling while emulation becomes more capable. Emulation is not perfect but, having seen a game filled with truly horrible anti-reversing code run ok with only a bit of a hack, I'm sure it will improve. (I spent several days last year reversing a crypto key that was miscomputed by just 4 bits though! )


          • #6
            Heh, I agree. Emulation is getting better, but I do believe that a PS2-side hacking system would be even better.

            If you have any ideas/input at any point of the project (especially once some more source is made public), feel free to throw them/it in; we can use all the help and expertise we can get.
            I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...


            • #7
              Tentative project specs have been posted in this forum.
              I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...


              • #8
                Have you considered adding the meaty PS2-side parts (memory dumping, etc) as extra commands to ps2link? It already does a lot of what you want and there's already clients with source you could modify to support the new commands.

                You'd still want some sort of simple front end for applying the codes for ordinary users...


                • #9
                  I should definitely take a look at the source for some of the apps that already interact via network connection with the PS2.

                  Yes; I'd like to make a user-friendly GUI app (probably in VB.NET), and eventually merge it with Majestic Porter (hence the two names being anagrams of each other).
                  I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...


                  • #10
                    Its a fairly simple protocol, take a look:


                    I'm allergic to, but I could help you add support if you want.


                    • #11
                      Adapting ps2link would be very difficult. One issue is that its code already has a big footprint. But we have to reduce the size as much as possible to make it fit into EE RAM without affecting games... we can do this, for example, by moving the whole network communication code to IOP, and by calling the existing Sif* functions (e.g., SifLoadModule) of the actual game we want to hack.

                      I was able to send data from the PS2 to the PC over network while running a game. This was the first and, unfortunately, also last milestone I achieved. There's much left to be done. I wasn't able to receive any data on the PS2. And after switching to Linux and the latest PS2SDK (I was using an old Cygwin build before), neither sending nor receiving worked for me... I didn't investigate it carefully though.

                      ps2link's protocol is indeed very simple and straightforward, but we'll need an adequate replacement for the slow TCP (in order to find cheat codes, we have to dump lots of memory). Until now, I've been using a proprietary UDP protocol for reliable packet delivery. That way, I was able to achieve about 1 MB/s. But I never liked my implementation. I recommend using Reliable UDP Protocol (RUDP) or something similar as a reliable and fast data transport service.


                      • #12
                        It doesn't have to be written in .NET (it's fairly counter to the open source goal of Artemis, after all, heh), but it might be conducive of a quickly-written Windows GUI, especially if it's to be merged with Majestic Porter.

                        Ah; I stashed that text file somewhere some time ago, and never got to reading it. I'll take a detailed look later Thanks.

                        misfire: Have you tested your PS2SDK since then? You could also take a look at the fixed, pre-built MinGW/msys build I've provided...
                        I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...


                        • #13
                          No, I haven't. If I finally get around installing Ubuntu on my laptop, I'll give it another try (I want to reinstall my whole system).


                          • #14
                            hmm,i compiled the dumper.elf, driver made,will it dump any games memory? I tried a couple games but it wouldnt load the game.
                            Or else the data in systemhooks.s specific to a certain game?
                            Last edited by noobwithboobs; 08-13-2008, 10:23:02 AM.


                            • #15
                              Well, ps2link already uses udp for some parts of the protocol, but you're going to find that the PS2 is very very slow when it comes to sending large amounts of data like that.

                              Perhaps a smarter approach would be better than brute force. How about a command that sends you only the memory values that change over the next X seconds? Send the command, do something, see what changes.