Find the ps3tmapi_net.dll somewhere on the web, or move it from Program Files\SN Systems\PS3\bin (if you installed the PRoDG Debugger), and put it in the same directory as NetCheat PS3.

Whats New?

Added Range where you set the debugger range you want to scan. Double click on the range to edit it or hit add to make a new one. you can also save them into a .ncm (net cheat memory) which can be loaded every time you restart NetCheat. An .ncm file would look like this.

It goes Start address. end address. So far I have not found any bugs but if you do please post in the thread. The RAR/ZIP will come with everything you need to know to get started *not the ps3tmapi_net.dll* Also Codes are in the format of:

2 12345678 9ABCDEF0
2 = code type 12345678 = debugger address (most end in 0,4,8,C)
9ABCDEF0 is what you want written to that debugger address

There are many code types but I won't explain them here. There's a Read Me that has them all. Enjoy. Source will come at another time.

This download comes with its own Read me to help you understand how it works. And JokerThat for PS3 all you do it input your code along with the joker address at the top and it'll make a joker code for you (comes with Read me).

Credits Go to:

Dnawrkshp

Veritassdg/Renton

And iMCSx for his thread on the PS3 debugger API located here (nextgenupdate.com/forums/ps3-cheats-customization/634548-release-development-application-ps3tmapi_net-dll-c-c-vbulletin-net.html) note this takes you to another forum.

Any ideas feel free to post or pm me too. If you see this released on another forum under the user name Renton its me.

Finally, from Dnawrkshp: So this is just a repost from another site from a couple years ago. Maybe someone will have a use for it.. At this point I don't have plans to pick it back up but maybe I will at some point. Enjoy.

NOTE: NetCheat requires a PS2 and a PC with an internet connection. Please read the readme.txt for details on how to setup the network configuration.

I began working on this thing July of 2012 and was incapable of completing it due to lack of programming knowledge. After 2 months I stopped working on it and began working on CL-LiveDebug. Now I've taken a break from CL-LiveDebug to finish NetCheat. The goal was to create something far superior to CodeMajic in code types, number of codes, and compatibility with ESR and OPL. Now that I have reached those goals, I have decided to release this as an open source cheat device for anyone to touch and use.

The code types, for the most part, follow that of CodeBreaker. I have made a few changes to a couple and added a few as well. The largest change to take note of is the mastercode implementation. Since NetCheat is hooked to the syscall handler and not to the game itself, mastercodes serve no purpose.

However I have created a use for the conditional mastercode (9) which can be read in the list below. If you would like this to execute close to the game loop I would suggest adding this to the top of your codelist: B0000000 0000000E. That forces everything below to only be executed 1 out of 0xE times. That value may differ per game.

I'd like to thank Pyriel for such a thorough guide publish on the codemasters-project.net guides (which is no longer available sadly...). For all code types not listed below, please refer to that guide. Since it's not available anymore, just follow this guide. It's not as detailed but it works.

REMEMBER that certain codetypes have been changed or replaced within NetCheat (PS2) and that the ones listed below overrule those listed in the guide.

Included with NetCheat is "Joker That" which is a complete knock-off of Joker It! by Rathlar. The difference is that Joker That supports 8 and 16 bit options and all the comparison types.

A video I made to explain a few things:

Both the source of NetCheat and NetCheat PC Manager can be accessed at my GitHub. If you want to read through the Engine and possibly correct any errors made, here is a direct link: github.com/Dnawrkshp/NetCheat/blob/master/Code%20Designer%20Sources/NCEngine.cds

If you have an suggestions for code types or additions to already implemented code types, please reply below with a description of how it works and its format. Special thanks to bungholio for beta testing.

To quote: NetCheat PS3 is a DEX Real Time Editing tool that takes advantage of the ps3tmapi_net.dll that comes with the PRoDG Debugger. This doesn't come with that dll, so you have to get it yourself and place it in the same directory as NetCheat. NC supports codes (similar to RAW PS2 codes), searching, dumping, memory ranges, and user made plugins. Here is a list of the new stuff since the last release:

Faster results list refreshing

Multiple searching bug fixes

Faster dumping

Keybinding

Theme selection

Custom plugins

Search stopping (keeps the results in the results list and allows Next Scan)

Deleting results

Plugins:

Plugins are just User Controls compiled into a dll that NetCheat puts on a form and utilizes. It has the ability to read from, write to, and constantly write to the memory. It also has a few functions that may be useful for certain situations.

Creating a plugin is fairly easy. Since this is messy and no one likes text tutorials, I will make a video soon. You should also look at the Kingdom Hearts 1.5 plugin for help.

Create a new Class Library in VS 2008+.

Set the .NET framework to 3.5.

Add a reference to PluginInterface.dll and import the Plugin.cs from the Plugin Default directory.

Modify the Plugin.cs accordingly and then add a User Control.

Call the User Control ctlMain and in it add the following declaration "public static IPluginHost NCInterface = null;".

Then at the top of ctlMain, add the following namespace: "using PluginInterface;".

Make sure that the namespace in Plugin.cs matches the namespace of ctlMain.

Otherwise they won't be able to interact.

From there you can just make a GUI and such just like a windows form.

Be sure to change the output directory to NetCheat PS3's plugins folder!

Also, every time you build the plugin.dll you must close NetCheat.

Memory Ranges:

Each game uses different regions of the memory so, for full optimization, it is best to document these regions. As far as I know the only way to do this is to go through the memory in the Debugger and find the regions with a ton of 0xD's.

Pad format (jokers):

JokerThat PS3 outputs only one way: ab00cd. Some games have different formats, and others a different order. For now, if your game has its pad format something like 00abcd, then you will have to change the order yourself. Sorry.

The format and codetypes are better explained in the Code types.txt.

In fact I'm not going to explain it at all since you can just read that text file.

Keep in mind jokers have to be constantly written to work.

Searching:

Searching (scanning) has the ability to store all the results in a listview so that you can search again (Next Scan) through those results for an updated value. You can then delete, refresh, and copy those results.

NetCheat PS3 also supports dumping. Unlike the debugger, you can dump outside of the game's memory without error.

Refreshing:

There are two ways that you can refresh the results. One is to refresh each item by getting the values from the PS3. The other is to update the values by getting them from the dump.txt. For the most part you will only need to refresh the results from the PS3 (hence the big button to refresh from the PS3). The only use I know of for the refresh from dump.txt is the following trick:

Say you want to save your search results so that you can return to looking for that value you want to find later.

What you'd do is copy the dump.txt file in the directory of NetCheatPS3.exe and rename it to something more descriptive.

When you want to load it back up you'd open NetCheat and then copy the saved file back to the directory of NetCheat.

Rename it to dump.txt and go back to NC PS3.

From there you would click on the results listview and press Ctrl-R.

That will load the dump into the listview and all will be well.

NOTE: NetCheat deletes the dump.txt when it closes so save it before you close the tool.

Scan comparison types:

Equal

Not Equal

Less Than

Less Than Or Equal

Greater Than

Greater Than Or Equal

Value Between -- Next Scan Only --

Increased By

Decreased By

Scan value types:

1 byte

2 bytes

4 bytes

8 bytes

Text (String)

If you want to search for a value greater than 8 bytes, you can just convert the value to a string and search for that.

NetCheat for PS3 v4.0 by Dnawrkshp Arrives for DEX Consoles

Following up on the previous version, today PlayStation 3 homebrew developer Dnawrkshp has updated NetCheat for PS3 DEX Consoles to version 4.0 followed by v4.1, v4.23, v4.30 and v4.31 with the changes outlined below.

To quote: NetCheat PS3 is a DEX Real Time Editing tool that takes advantage of the ps3tmapi_net.dll that comes with the PRoDG Debugger. This doesn’t come with that dll, so you have to get it yourself and place it in the same directory as NetCheat.

NC supports codes (similar to RAW PS2 codes), searching, dumping, memory ranges, and user made plugins. Here is a list of the new stuff since the last release:

NOTE: All plugins must be updated to use the new PluginInterface.dll otherwise NetCheat will fail to load them.

Implementations:

Colored status button for connection state

Load and Store search results

Search for X byte alignment (where X is and positive integer)

Search for changed value and unchanged value

Recent memory ranges menu

A few new plugin features

Plugin icons

Bug fixes:

Faster searching

Fixed color bug in codes tab

Fixed cheat file having a bunch of extra ‘/n’

Fixed labels in codes beginning with “//” disappearing

Plugins:

Plugins are just User Controls compiled into a dll that NetCheat puts on a form and utilizes. It has the ability to read from, write to, and constantly write to the memory. It also has a few functions that may be useful for certain situations.

Creating a plugin is fairly easy and here is a video I made to help:

You should also look at the Kingdom Hearts 1.5 plugin for help (now added in .rar as of v4).

Memory Ranges:

Each game uses different regions of the memory so, for full optimization, it is best to document these regions. As far as I know the only way to do this is to go through the memory in the Debugger and find the regions with a ton of 0xD’s.

Pad format (jokers):

JokerThat PS3 outputs only one way: ab00cd. Some games have different formats, and others a different order. For now, if your game has its pad format something like 00abcd, then you will have to change the order yourself. Sorry.

Codes:

The format and codetypes are better explained in the Code types.txt. In fact I’m not going to explain it at all since you can just read that text file. Keep in mind jokers have to be constantly written to work.

Searching:

Searching (scanning) has the ability to store all the results in a listview so that you can search again (Next Scan) through those results for an updated value. You can then delete, refresh, and copy those results.

NetCheat PS3 also supports dumping. Unlike the debugger, you can dump outside of the game’s memory without error.

If you want to search for something and the number of results slows the search down exponentially, then you can use CompDump and dumps to find differences. Then with the outputted results from CompDump you can convert and load it into NC’s search results list view by using the Conversion plugin. In the plugin there is an empty text box at the bottom with a browse button next to it.

Direct the file browser to the outputted CompDump results (leave the dump.txt below the same unless you want to load it up via the Load Scan Results button) and click Start. Once it is done, go to the search tab, click on the search results list view, and press Ctrl-R to load them into the list view and you are good to go.

This allows the initial scanning of 0 without displaying 10 billion results (good for timers).

Refreshing:

There are two ways that you can refresh the results. One is to refresh each item by getting the values from the PS3. The other is to update the values by getting them from the dump.txt. For the most part you will only need to refresh the results from the PS3 (hence the big button to refresh from the PS3). The only use I know of for the refresh from dump.txt is for the CompDump search result import.

Scan comparison types:

Equal
Not Equal
Less Than
Less Than Or Equal
Greater Than
Greater Than Or Equal
Value Between
– Next Scan Only –
Increased By
Decreased By
Changed Value
Unchanged Value

Scan value types:

1 byte
2 bytes
4 bytes
8 bytes
X bytes
Text (String)

Credits:

Written by Dnawrkshp
Concept by Veritassdg / Renton
Help from Badger41

This GTA: O modding tool is designed as a plugin used with the popular tool NetCheat - By Dnarkshp.This is just an early version I decided to push out, more features will come as I develop this plugin more.

Features:

Scanning for the online garage and populating a list with names of associated vehicles.

NOTE: All plugins must be updated to use the new PluginInterface.dll otherwise NetCheat will fail to load them.

Version 4.1:

Fixed X byte searching only allowing up to 8 bytes

Fixed 1 byte searching

Fixed 2 byte searching

Fixed Value Between

Implementations:

Colored status button for connection state

Load and Store search results

Search for X byte alignment (where X is a positive integer)

Search for changed value and unchanged value

Recent memory ranges menu

A few new plugin features

Plugin icons

Bug fixes:

Faster searching

Fixed color bug in codes tab

Fixed cheat file having a bunch of extra '/n'

Fixed labels in codes beginning with "//" disappearing

Update #2: Updated to version 4.23. The ones between 4.1 and 4.23 were private updates.

I've added the ability to check for new NetCheat updates on start-up and manually at will. This should hopefully be more convenient for everyone. Thanks to my friend ORCXodus for letting me host the update files on his site (cod-orc.com). I've also added a function to find the memory regions automatically. Keep in mind everything in the C0000000 region should not be touched and everything in the D0000000 region (stack) should not be touched either.

Update #3: Updated to 4.30. If you already have NetCheat, you can just boot it up and it will ask if you'd like to update. Among other things, CCAPI support has been added through PS3Lib.

NetCheat is now version 4.31:

Added PowerOff function to PS3Lib

Fixed range list bug (shows extra ncm)

Fixed importing multiple codes coloring bug

Lowered PS3Lib to .NET v4.0 for WinXP support

Decided to downgrade everything to .NET 3.5 (which was what NetCheat used to be on). The only issue is that CCAPI is on a newer version. When Enstone is available I will ask for a version specially made for NetCheat and hope that will fix the rest of the bugs that people are encountering... Sorry for the messed up updates.

Finally, from kristijan1001: Here is a net cheat for cex I didn't made this! credits to the one he made it. I saw this on nextgen update which was made private for elite members only probably so though I share it I am not elite there but I sneak it out I wasn't able to find this anywhere else I searched with no result.

This is actually netcheat v.4.33 by dnawrkshp, as you go in to the options menu you will see ccapi and ps3tmapi so you can chose between dex and cex (including gta v garage editor).

NetCheat Grand Theft Auto Online - Garage Editor Plugin by badger41

This GTA: Online modding tool is designed as a plugin used with the popular tool NetCheat - By Dnawrkshp. This is just an early version I decided to push out, more features will come as I develop this plugin more.

Features:

Scanning for the online garage and populating a list with names of associated vehicles.

It allows you to write the assembly and assemble it into NetCheat format, byte array (C#), and a hex string array. It allows for multiple tabs, coloring, labels, custom psuedo instructions, and an auto complete menu.

Assembly:

Format:

Instructions must be lowercase (addi, not ADDI).
Psuedo instructions must be laid out like so:

Registers prefixes are % and $, but you can have no prefix. Registers must be lowercase.
Decimal values must have no prefix.
Hexadecimal values must have a 0x or $ prefix.
Single line comments start with //
Multiline comments start with /* and end with */
Label declarations must end with : and label referring is just the label name

Conditional branches use labels or offsets. The offsets are relative to the current address. Unconditional branches use labels or addresses. The addresses are not relative.

label1:

beq 0x4 //Branches if cr0 is equal to the next line
bl 0x001ADCC0

beq label1
bl label1

Instructions like stw (stw rA, 0xXXXX(rD)) must be laid out like shown. You can't write "stw rA, rD, 0xXXXX" or anything similar.

Special Instructions:

"address 0xXXXXXXXX" - Sets the current address in the assembler.
"hook 0xXXXXXXXX" - One time use, sets the passed address to a *branch* to the first "address" instruction (hooks the beginning of the sub to the passed argument).
"hookl 0xXXXXXXXX" - One time use, sets the passed address to a *branch and link* to the first "address" instruction (hooks the beginning of the sub to the passed argument).
"setreg rD, 0xXXXXXXXX" - Sets the register rD to the passed 32 bit immediate. Doesn't have to be hexadecimal.
"hexcode 0xXXXXXXXX" - In the assembled code, the value will be equal to the passed 32 bit value. This is great for unsupported instructions.
"import [PATH]" - Imports the file at [PATH] into the subroutine at assemble time. Puts it after the already loaded imports.
"float [FLOAT]" - Inserts into the assembled code as assemble time the hexadecimal version of the float specified. Ex: float 1.23 => 3F9D70A4
"string [STRING]" - Converts the string into a hex version and inserts it into the code at assemble time. Ex: string aBbCcd => 61426243 :: 63640000

The format must be in NetCheat PS3 format. If it is not then you must use the Conversion form under Tools. Labels and address instructions will be used as much as possible. Only other thing is that it erases the currently open tab if you accept the prompt.

Emulation:

Images:

Please understand that the emulator is very basic and is just to find errors in the assembly. It only emulates the assembly.

Registers are completely modifiable during execution and turn red when they are modified by the code. You may switch between the register types by clicking on the lable above the register list. The stack pointer (register 1) is set in the options menu and is defaulted to 02000000.

Controls are fairly simple. Aside from the buttons, you may press F11 to step into. The debug box just displays any errors that occur like unsupported op or invalid memory access.

So I am releasing this as beta to get some feedback as to what instructions should be added. Also if you have find any bugs or have questions please don't be afraid to reply.

1.2.4 Changelog:

Fixed a bunch of assembling bugs that were caused by new NC format
Fixed bug where new tab wouldn't have autocomplete
Fixed bug caused when a pseudo instruction has no arguments can't be used
Cleaned up emulator and assembler a bit
Added AutoIndent
Added tab support (cleaner formatting)
Added new instructions: divw, lwzx, stwx, ldx, stdx, lfd, stfd
Added Updater (identical to NetCheat PS3)

Below is a Hooking Methods Guide from therifboy, as follows:

Note: you will need some knowledge of ppc for this. I'll try to explain some methods of hooking as good as possible. But it still can be hard without knowledge of ppc since you will need to reverse the number of arguments and also the type. I will not explain this process.

This method is really simple. All it does is edit the call to make it branch to a subroutine you have written inside the .self. Note that the difference between the address of the call and your subroutine can't be bigger than 0x1FFFFFC. That's the range of a 'bl'.

If I press X on that call I can see that subroutine is referenced multiple times, but we will be intercepting only the calls coming from the subroutine i'm currently in. In this case sub_23286C. The function I will be hooking is cellHttpSendRequest btw.

This method is not the best one. You will either need to write the subroutine by hand and then copy it somewhere into memory where it can be executed, or write it in C/C++, compile the code and then edit the addresses by hand. Your code should look like this:

What I mean by edit addresses by hand is that you will need to edit the opcodes for the call to printf to make it call the printf function inside the .self.

METHOD 2: Intercepting calls of separate functions using a sprx and a stub. (I will explain this using the same subroutine as previous method.)

This method is I think the easiest one. I will make it branch to a stub which will then branch to a function inside my sprx. This method has 4 arguments: r3 - r6. The first thing to do in the stub is to save these arguments and the link register.

This method will require some hand edits but it can also be tricky sometimes. It overwrites the 4 beginning opcodes of a function (often the stack setup) to branch to our own code. This subroutine is an example of when it won't work.

This is how the function you hook to should look like. The function has 5 arguments. So we will need to move those 5 arguments back to r3, r4, r5, r6 and r7 before we can return to the function we hooked. The asm is where we will do our edits.

This is how it looks like when compiled. Using HxD we will move the opcodes generated by the compiler on top of the beginning opcodes we copied.

Decrypt your plugin to .prx and open it up using HxD. Then locate the address inside HxD by adding 0xF0 to the address in IDA. For me it is 0x1F4 + 0xF0 = 0x2E4.

Go to that address by pressing CTRL + G or Search->Goto. Cut the bytes and paste them at the right address. Also change the blr (4E 80 00 20) to bctr (4E 80 04 20). When that is done save your file, you should end up with this.

I read this idea from somewhere and I thought it was a really cool concept. So I decided to at least try to create it for the PS3. The result isn't usable as it probably runs at 3 fps, but it is just a proof of concept.

In more detail, there is a PS3 program and a PC program. The PC program requests the controller data from the PS3 and uses that with config from the user to interact with a program (probably an emulator). Then the PC will send the current screen to the PS3 and the PS3 will display that image on the TV. At this point, the image is sent as an uncompressed png file (probably one of the problems) to the PS3.

The video shows the PC program working exclusively with VBA and a hard-coded input config. It also doesn't have support for joysticks (yet, it won't be hard).

I don't think I can take this program any farther than it is, but maybe there is someone that can. It is completely private, but if people still want it (even for just the controller capability) I can release it. If someone wants to actually work on the source I can also release the source code for everyone.

As for NetCheat (since someone will ask in this thread), I'm still taking a break from it. Given I'm pretty much the only developer, it can be very stress inducing and I don't like that. I have a few bugs to fix and then I can push the update (CCAPI 2.5, results list locking up, and probably more).

Yeah you're right. A 549 kb png converted to a 137 kb jpg. I'll definitely change it to use JPEG and post an update. Oh yeah that definitely sped it up:

Yeah then the thing I read was probably from you. Therifboy sent me a list of things that were being requested as a plugin. I saw this one and thought that it would be a lot more practical as a full on program. Thanks for the great idea.

My AV was scanning in the background which accounted for all the random lag spikes. Otherwise I can get a reasonable 15 fps or so from this. At this point beta testing could/should occur. Anyone feeling up to testing for me? Yeah this exact text was in the thing:

Run the emulator on the PC.
Video/sound transferred to the PS3 from PC
Controls from PS3 to PC.

It's pretty straight forward. Important to note that HD TV's stretch the image so much that you need a high quality to see anything. Also using a cross-over cable is the best method.

I'm definitely interested in sending the PS3's frame buffer over to the PC at a good FPS. But I think it'll be delayed (displaying on PC) and simulating controller input wouldn't be possible. At least I have no idea how to do it.

Regarding AC, I'm thinking of using UDP instead of TCP since it would be faster. Though since it isn't as reliable I wonder if that could cause the PS3 to freeze from the corrupt image. Definitely worth a try though. And thanks for testing

I've changed a few things, namely the input simulator works with Project64 and probably more emulators. Though for some reason the arrow keys don't work... So just remap the controller to use something else and you should good to go.

I recorded myself playing SSB64 with my capture card so you can properly see it working. Also, Link4Life.

I'm using GDI. I implemented that DX method but it seems slower than my current GDI screen capturer. Using JPEG is definitely better than BMP. The issue isn't processing power (unless you are on a really crappy computer), but net speed. A 1.8 mb file will take more time to send than compressing it down to 50kb and sending that.

I'm going to stick with TCP just because I don't have any experience with UDP. Updating the screen only when stuff changes should work but actually calculating changes and applying them is slow... So the result is around half the speed of the regular. Here is my code on the PS3; there might be something to speed it up:

I'm using GDI. I implemented that DX method but it seems slower than my current GDI screen capturer.

Using JPEG is definitely better than BMP. The issue isn't processing power (unless you are on a really crappy computer), but net speed. A 1.8 mb file will take more time to send than compressing it down to 50kb and sending that.

I'm going to stick with TCP just because I don't have any experience with UDP. Updating the screen only when stuff changes should work but actually calculating changes and applying them is slow... So the result is around half the speed of the regular. Here is my code on the PS3; there might be something to speed it up: