PS3 Library .NET
Version 4.3
Integration CCAPI C# - Make Real Time Tools Easily For DEX or CEX consoles !
A new version of PS3Lib is now released. This version allows you to connect via .NET language your console with TMAPI(Target Manager API) or with CCAPI (Control Console API) so it works for DEX / CEX
The download link is at the bottom of this thread (Codeplex link + viruscan) and the package contains all binaries needed + 2 demo projects C#.
New features :
- Support CCAPI v2.50 C#.
- Function ReadString is now very fast.
- Extension class support both API's.
- ArrayBuilder for build arrays easily.
- IO Removed (Few people used it).
- Set API to switch when you want.
- Use both API's with same function names.
- Dialog CCAPI for ip implemented.
- Connect & Attach function returns bool.
- Fixed some bugs TMAPI.
Changelog v4.1 :
- Integration classic functions PS3TMAPI_NET.dll (so you don't need to use it anymore)
- Extension class fixed if you use ccapi you don't have an error about PS3TMAPI_NET.dll.
- You can access to TMAPI_NET class with : using PS3Lib.NET;
Changelog v4.1.1.0 :
- All instances error have been fixed ! The dll works just fine now !
- Thanks to SnaY for his testing with this new version !
Changelog v4.2 :
- The DLL use now the .NET Framework 4.0, so windows XP is now compatible.
- Added functions PowerOff / PowerOn for TMAPI.
- Added function InitComms for TMAPI & InitTarget for PS3API (To re-init your console in a thread or a timer)
- A part of a function has been edited.
Changelog v4.3 :
- If you want use CCAPI, you need to install the version 2.50
- New popup with standard UI.
- Popup with icons.
- Popup consoles list for CCAPI.
- Popup translated in French and English (Auto detect)
-The translation is not the better way i know, but i don't have the time to make a correct translation.
As you saw, CCAPI has been updated (v2.50) you need to install the CCAPI setup to use this dll with CCAPI.
NOTE : You don't need to give the CCAPI.dll with your applications! The version v2.50 find itself by the computer, if you see the a CCAPI.dll in the same folder of an application DELETE IT ! As i've said, with the version v2.50 it's notneeded and not recommanded to give a dll (You'll get some errors). Also a reboot is recommanded once the CCAPI v2.50 installed !
These app in below are just 2 demo coded very quickly only for show you all possibility.
Here 2 Pictures :
I'll start to explain how to add/use the dll in your project right now.
Once you have extracted the binaries folder of the .zip, add the dll PS3Lib as reference into visual studio, and in your source code :
Code:
using PS3Lib;
Your ready to use the dll. Now this thread is splitted in 3 parts.
Don't worry, if you dont understand something i left 2 Demo projects (source) in the package.
If you have an error like "Impossible to load PS3TMAPI_NET.dll" just place this dll in the same directory of your .exe
I - PS3API (TMAPI & CCAPI All in one)
- This part is to use CCAPI or TMAPI when you want ! You can switch modes at all time.
It's VERY useful if you want make a tool compatible TMAPI and CCAPI without changing your code.
You need to create this instance :
Code:
// This will set by default the TMAPI
private PS3API PS3 = new PS3API();
// If you want set instantly the CCAPI so make this :
private PS3API PS3 = new PS3API(SelectAPI.ControlConsole);
You can now use the function connect & attach :
Code:
if(PS3.ConnectTarget())
{
//Connected, so we'll attach the process
if(PS3.AttachProcess())
{
// Attached !
}
else { // ERROR ATTACH }
}
else
{
// Connection error.
}
Yeah, here these functions return a boolean. If you have selected TMAPI, the default console will be connect, if you have selected the CCAPI, a mini dialog will be displayed for the IP.
If you want make your own custom dialog, just look at my sources.
You can now use all basic functions like SetMemory/GetMemory and Extensions too !
You can change the api with this function :
Code:
PS3.ChangeAPI(SelectAPI.TargetManager); // Or SelectAPI.ControlConsole for CCAPI 🙂
There are some useful functions like GetCurrentAPI or GetCurrentAPIName (string), here the last example :
Code:
if(PS3.GetCurrentAPI() == SelectAPI.TargetManager)
{
// You use TMAPI.
}
else
{
// You use CCAPI.
}
It's pretty simple, right ? I think this class was the best solution to make RTE Tools without editing your code
II - CCAPI
This part is for use ONLY CCAPI.
You need to create an instance of the class CCAPI, i recommand to use global variable, so do this :
Code:
private CCAPI PS3 = new CCAPI();
Now into a button , you can use all functions, example here for connect and attach :
Code:
// Connect
PS3.ConnectTarget("192.168.1.13"); // Here you need to put the PS3 IP
// Attach Default GAME process :
PS3.AttachProcess();
// You can also use the function SUCCESS for know if the function has been correctly executed so :
if(PS3.SUCCESS(PS3.AttachProcess())
{
// It's good !
}
else
{
// Not good..
}
Or you can select which process to attach :
Code:
/***** Attach the default Process GAME **/
PS3.AttachProcess();
/** Attach a process manually **/
// Get all running processes
procs = new uint[64];
PS3.GetProcessList(out procs);
// Get a process name
string name = String.Empty;
PS3.GetProcessName(procs[0], ref name); // Return the name of the process 0.
// Attach your desired process
PS3.AttachProcess(procs[0]);
/** Attach a basic process by enum *****/
// Attach directly a basic process : (Only if you don't want make codes)
PS3.ProcessAttach(CCAPI.ProcessType.VSH);
As you saw, the method AttachProcess has 3 overloads, very useful.
You're now able to set or get memory :
Code:
// Set Memory
byte[] buffer = new byte[] { 0x10, 0x20, 0x30, 0x40};
PS3.SetMemory(0x10040000, buffer);
// Get Memory
byte[] buffer = new byte[4];
PS3.GetMemory(0x10040000, buffer);
These are just some examples. Both of these functions can use ulong or uint addresses. You can also use :
- GetLv2Memory / SetLv2Memory
- GetLv1Memory / SetLv1Memory
These method work with the same method (Just use ulong addresses).
There are a lots of functions available... Just look into the source (CodePlex) or into the CCAPI-Demo in the package. I created a CCAPI Manager in C#, just to show you every function available.
You can also use the class Extensions with CCAPI, like this :
Code:
// Write an Integer with CCAPI easily :
PS3.Extensions.WriteInt32(0x10040000, 1337);
III - TMAPI
This part is for use ONLY TMAPI (DEX).
You need to create an instance of the class TMAPI, i recommand to use global variable, so do this :
Code:
private TMAPI DEX = new TMAPI();
Now into a button , you can use all functions, example here for connect and attach :
Code:
// Connect
if(DEX.ConnectTarget())
{
// OK, try to connect :
if(DEX.AttachProcess())
{
// Success
}
else
{
// Error attach
}
}
else
{
// Error connect
}
You can also connect your target by name or by index. I think i'll not post how to Get/Set Memory here, i have already explained in the PS3Lib v3 and it's the same things of others class
IV - ArrayBuilder
This part is for use ArrayBuilder.
You need to create an instance, but it's not needed in global :
Code:
// Here I create an array, I write some values/types and I send the buffer into memory...
byte[] buffer = new byte[0x50];
ArrayBuilder Build = new ArrayBuilder(buffer);
Build.Write.SetBool(3, true);
Build.Write.SetFloat(4, 1000);
Build.Write.SetInt32(8, 1337);
Build.Write.SetString(20, "iMCSx ArrayBuilder !");
PS3.SetMemory(0x10060000, buffer);
MessageBox.Show("Done, try to read now !");
// Here I get the buffer from memory, and I read it.
byte[] buff = PS3.Extension.ReadBytes(0x10060000, 0x50);
ArrayBuilder Build = new ArrayBuilder(buff);
bool var1 = Build.Read.GetBool(3);
float var2 = Build.Read.GetFloat(4);
int var3 = Build.Read.GetInt32(8);
string var4 = Build.Read.GetString(20);
MessageBox.Show("Result from the array sent to memory is :nnPosition 3 - Bool - " + var1.ToString() + "nnPosition 4 - Float - " + var2.ToString() + "nnPosition 8 - Int32 - " + var3.ToString() + "nnPosition 20 - String - " + var4);
I think these extras will be cool for some people, because you can write an array as you want, with a different endian and different type. It's much faster than doing lots of SetMemory or GetMemory.
Thanks for reading guys, and I hope you will like this PS3Lib, if you found a bug or something just tell me.
NO Credit to me...
Credits : FM|T Enstone