Nov 27

Posted by : FM|T iMCSx

[RELEASE] PS3Lib v4.2 - DEX/CEX

PS3 Library .NET

Version 4.2

Intégration CCAPI C# - Faites des tools real time DEX/CEX rapidement et facilement !



Une nouvelle version du PS3Lib est maintenant publlié. Cette version vous permet de connecté par .NET votre console a TMAPI(Target Manager API) ou avec CCAPI (Control Console API) donc ça fonctionne DEX / CEX :)

Le lien de téléchargement est en bas de page (CodePlex + Virus scan). Les éxecutables sont de la package ainsi que 2 projets démo en source !


Nouvelle fonctionalités :

- Support du CCAPI v2.0 C#.
- La fonction ReadString est maintenant trés rapide.
- La classe Extensions support les deux API.
- ArrayBuilder pour faire de tableau d'octets simplement.
- IO Supprimé (Peu l'utilisé).
- Selectionner l'API de son choix quand on veux.
- Utilisé les deux API avec les mêmes noms de fonctions.
- Pop-up IP auto intégrée.
- Connect & Attach retourne un bool.
- Bug TMAPI corrigé.

Quoi de nouveau sur la v4.1 ?:

- Integration des classes basique PS3TMAPI_NET (donc plus besoin de donné OU utilisé cette DLL !)
- Bug de la classe Extension corrigé.
- Accés a la nouvelle classe TMAPI_NET en utilisant le namespace PS3Lib.NET

Quoi de nouveau sur la v4.1.1.0 ?:

- Toutes les erreurs d'instances ont été fixé, la dll fonctionne désormais parfaitement !
- Merci a NGU SnaY pour ses test avec cette nouvelle version !

Quoi de nouveau sur la v4.2 ?:

- PS3Lib est désormais sur .NET Framework 4.0, donc fonctionnel sur winXP
- Ajout des fonctions PowerOn / PowerOff pour TMAPI.
- Ajout de InitComms pour TMAPI et InitTarget pour PS3API (Pour re-initialisé dans un thread ou un timer).
- Une fonction a été retouché.

Ici 2 images des démo fournie, l'esthétique n'est pas propre mais le but est de montré la possibilité niveau codage, et non comment dessiné une forme.

Ici 2 screenshots :

Image utilisateur

Image utilisateur



Je vais commencer a expliqué comment ajouté la dll dans votre projet dés maintenant.

Une fois que vous avez extrait les executable du zip, ajouté la dll PS3Lib en reference dans visual studio ainsi que ce code dans le fichier .cs que vous allez programmé :

Langage: csharp
using PS3Lib;


Voilà, le DLL est désormais prêt a être utilisé, ce topic seras maintenant divisé en 3 partie.
Pas de panique, si vous ne comprenez pas trés bien , j'ai fourni 2 sources C# dans le zip.
Si jamais vous avez une erreur du genre "Impossible de charger le fichier ou l'assembly PS3TMAPI_NET.dll" Mettez ce dll dans le même dossier que votre EXE. Ceci est nécéssaire uniquement pour PS3API avec TMAPI ou juste TMAPI.


I - PS3API (TMAPI & CCAPI Tout en un)

- Cette partie est pour utilisé CCAPI ou TMAPI en une seul classe. Et vous pouvez changer d'api quand vous voulez. Trés utilie pour rendre un tool compatible TMAPI/CCAPI facilement et sans modifier votre code.

Vous devez crée une instance :

Langage: csharp
// Ceci utilise par default l'api TMAPI.
// N'OUBLIEZ PAS D'AJOUTER PS3TMAPI_NET.DLL DANS LE MEME DOSSIER DE L'APPLICATION
private PS3API PS3 = new PS3API();

// Si vous voulez utilisé directement CCAPI faites ceci :
private PS3API PS3 = new PS3API(SelectAPI.ControlConsole);


Vous pouvez dés maintenant connecté et attaché :

Langage: csharp
if(PS3.ConnectTarget())
{
//Connected, so we'll attach the process
if(PS3.AttachProcess())
{
// Attaché
}
else { // ERROR ATTACH }
}
else
{
// Connection error.
}


Yep, ici les fonctions retourne bien un bool, si vous avez selectionné TMAPI la console par défault seras connecté, sinon si vous avez CCAPI une popup s'ouvriras pour que vous puissiez rentré l'ip sans problème.

Si vous voulez faire votre popup personalisé juste prenez ma source et faites en une upgrade.
Vous pouvez maintenant utilisé toutes les fonctions classique Get/Set Memory et également Extensions.

Vous pouvez a tout moment changé d'API comme celà :

Langage: csharp
PS3.ChangeAPI(SelectAPI.TargetManager); // Or SelectAPI.ControlConsole for CCAPI :)


Il y a d'autres fonction utile comme GetCurrentAPI ou GetCurrentAPIName (string), ici le dernier example :

Langage: csharp
if(PS3.GetCurrentAPI() == SelectAPI.TargetManager)
{
// Si l'application passe ici, vous utilisez Target Manager API.
}
else
{
// Sinon, c'est CCAPI.
}


Vraiment simple non ? Je pense que c'était la meilleur solutions pour proposé des tools Real time avec deux api sans changer son propre code :)



II - CCAPI

Cette partie utilise uniquement CCAPI.

Vous devez une instances de classe, je recommance donc d'en faire une variable globales :

Langage: csharp
private CCAPI PS3 = new CCAPI();


Maintenant dans un bouton vous pouvez utilisé les fonctions de connection et d'attach process :

Langage: csharp
// Connect
PS3.ConnectTarget("192.168.1.13"); // Ici doit être mis l'IP de la console.

// Attache le processus de jeu par default :
PS3.AttachProcess();

// Vous pouvez aussi utilisé la fonction SUCCESS pour savoir si la fonction retourne bien TRUE (Réussie).
if(PS3.SUCCESS(PS3.AttachProcess())
{
// c'est bon !
}
else
{
// pas bon...
}


Ou encore vous pouvez choisir vous même quel process attaché :


Langage: csharp

/******** Attache le processus de jeu par default ********/

PS3.AttachProcess();


/******** Méthode manuelle ********/

// Obtient tout le processus actifs
procs = new uint[64];
PS3.GetProcessList(out procs);

// Obtient le nom du processus
string name = String.Empty;
PS3.GetProcessName(procs[0], ref name); // Return the name of the process 0.

// Attache le processus désiré.
PS3.AttachProcess(procs[0]);


/******** Attachement des processus les plus courants ********/
// Example :
PS3.ProcessAttach(CCAPI.ProcessType.VSH);


Comme vous avez vu, AttachProcess a 3 surcharges de méthodes, trés utile !

Vous êtes maintenant autorisé a utilisé les fonctions Get/Set Memory :

Langage: csharp
// 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);


Ce sont juste des examples, vous pouvez utilisé uint/ulong en addresses et ainsi que ces fonctions :

- GetLv2Memory / SetLv2Memory
- GetLv1Memory / SetLv1Memory

Ces fonctions doivent avoir un ulong en addresse.
Il y a un paquet d'options dispo.. Il vous suffit de regardez mon source dans codeplex ou même dans le package je crée une demo projects pour l'utilisations , trés simple donc :)

Avec CCAPI , on utilise la classe Extensions toujours de la même façon :

Langage: csharp
// Ecrit un entier avec CCAPI trés facilement.
PS3.Extensions.WriteInt32(0x10040000, 1337);




III - TMAPI

Cette partie utilise TMAPI uniquement. (DEX).

Vous devez crée une instance de classe TMAPI, Mettez la en variable globale comme ceci :

Langage: csharp
private TMAPI DEX = new TMAPI();


Maintenant dans un boutons libre a vous d'utilisé les fonctions de base , comme ici la connexion :


Langage: csharp
// Connect // Attach
if(DEX.ConnectTarget())
{
// OK, try to connect :
if(DEX.AttachProcess())
{
// Success
}
else
{
// Error attach
}
}
else
{
// Error connect
}



Vous pouvez aussi connecté votre console par nom ou index. Je pense que je ne vais pas posté Get/Set memory ici, j'avais déjà expliqué dans la v3 et au pire dés cas c'est pareil que CCAPI :)



IV - ArrayBuilder

Cette partie est pour utilisé la classe ArrayBuilder.

Vous devez crée une instance de classe, mais pas nécéssaire en gloable :)

Langage: csharp
            // Ici je crée un tableau, j'ecrits dedans puis je l'envoie en console...
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 !");

// Ici j'obtient le tableau et je lis au positions voulu les valeurs...
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);



je pense que ces extras vont être cool pour les gens, car vous pouvez écrie un tableau de bytes comme vous le voulez avec un mode Endian différent et avec différent types. Cette méthode est plus rapide que de mettre plusieurs ligne de Get/Set Memory...


Merci d'avoir lû, j'espère vous aimerais ce PS3Lib , j'ai consacré pas mal de temps pour qu'il soit vraiment trés pratique d'utilisations.

N'oubliez pas de mettre la dll CCAPI.dll dans la même répertoire de l'application, et d'installer le CCAPI v2.0 de Enstone.

Crédits : FM|T Enstone


DOWNLOAD HERE - PS3Lib v4.2 | DEMO PROJECTS | SOURCE CODE

VIRUS SCAN