[RELEASE]Devellopement Application Ps3TMAPI_NET.DLL

Statut
N'est pas ouverte pour d'autres réponses.

FFM | iMoDzRGFR

Lobby MW3 [ON] ( Pas Gratuit )
Premium
Inscription
8 Janvier 2013
Messages
4 031
Réactions
978
Points
21 343
RGCoins
110
1053z2u.png
Script VB.Net Ajouté !

Comme vous avez vu les titre du topic, ce topic va vous expliquez comment lié votre Application C++/C# a votre PS3.
Avec ceci , vous pouvez envoyé au joueurs en partie en jeu vos mods trés facilement , et commencé a developpé votre propre application.

J'ai travaillé 2 semaine avec ENZO-F , l'administrateur de NGU pour un projet NGU Elite & FMT Elite. Moi pour faire l'application et lui pour amélioré leur sécurité ELITE. Mais j'ai vu que quelques personne ont release leur pitoyable tool (Trahisons pour BuC & Moi) ce projet est donc mort , il est bon a jetter a la poubelle 1 semaine de codage sur une application.

D'abord je voudrais remercier :

- BuC-ShoTz pour son aide InitTargetComms() & la méthode Out ProcessID.
- FM|T Enstone pour avoir contribué au topic avec la partie C++.

Comment utilisé cette méthode ?:

- C'est avec l'API du Target Manager , Tout est dans un dll , le ps3tmapi_net.dll est dans un dossier C:\Program Files (x86)\SN Systems\PS3\bin , vous devrez trouvé ceci vous même je partage pas ce DLL ici.

La Partie C# :

Connectique :

Code:

PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);


Avec ces codes , le dll sera initialisé avec votre application , et être prêt a utilisé les fonctions SN System.

Obtenir et Attacher le Process :
Code:

PS3TMAPI.GetProcessList(0, out processIDs);
ulong uProcess = processIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);


Avec ces codes , votre application va trouvé et attacher le Process automatiquement.

Set Memory :
Code:

PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, bytes);


Cette fonction va écrire les octets dans la mémoire du jeu , Remplacez Address & Bytes par vos propres valeur. Exemple :

Code:

byte[] iMCSx = new byte[] { 0x69, 0x4D, 0x43, 0x53, 0x78, 0x00 };
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, 0x01BBBC2C, iMCSx);


Get Memory :
Code:

byte[] iMCSx = new byte[0x20];
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref iMCSx);


Cette fonction va obtenir tout les octets en partant de l'adresse indiqué. Dans ce cas , tout les octets stocké seront dans byte[] iMCSx. le 0x20 entre parenthèse et la longueur max que votre byte[] contiendras.


La Partie Visual Basic :

C'est Pareille que le C# sauf que le language change , il faut ajouté le dll en réference ect ect. Voici mes lignes convertie fonctionnelle :

Connection :
Code:

PS3TMAPI.InitTargetComms()
PS3TMAPI.Connect(0, vbNullString)



Obtenir et Attacher le Process :
Code:

Try
PS3TMAPI.GetProcessList(0, processIDs)
Dim uProcess As ULong = processIDs(0)
ProcessID = Convert.ToUInt32(uProcess)
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID)
PS3TMAPI.ProcessContinue(0, ProcessID)
Dim Info As String = "The Process 0x" & ProcessID.ToString("X8") & " Has Been Attached !"
MessageBox.Show(Info, "Process Ready!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Catch Ex As Exception
MessageBox.Show(Ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End Try



Et en en-tête de la form , déclarez les uint & ulong comme ceci :

Code:

Private processIDs As UInteger()
Private ProcessID As UInteger



Set Memory :
Code:

Dim Test As Byte() = New Byte() {&H5} // it's 0x05 in byte C#
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address (Example &H00FCA280, iMCSx)



Les offsets doivent être également convertie , exemple 0x3980 devient &H3980 :

Code:

Private Function MW3ClientState(clientNum As UInteger) As UInteger
Return (&H110A280 + (clientNum * &H3980))
End Function



Exemple d'utilisation des scripts du PS3Lib en VB :
Code:

PS3.SetMemory(Address, Byte)


La partie C++ :

Etape 1 :

Premièrement , si vous êtes un developper vous devez chargé le ps3tmapi_net.dll dans votre code comme ceci :
Code:

const WCHAR * dllName = L"ps3tmapi.dll";
HINSTANCE hlib = LoadLibrary(dllName);


Le dll doit être dans le même repertoire que votre exécutable.

Etape 2 :

Vous devriez utilisé quelque typedef pour simplifier les fonctions , comme ceci :
Code:

typedef int (__cdecl *InitTargetCommsFunction)(void);
typedef int (__cdecl *ConnectFunction)(int,LPWSTR);
typedef int (__cdecl *ProcessListFunction)(int, UINT32*, UINT32*);
typedef int (__cdecl *ProcessAttachFunction)(int, UINT32 ,UINT32);
typedef int (__cdecl *ProcessContinueFunction) (int, UINT32);
typedef int (__cdecl *ProcessInfoFunction)(int, UINT32 ,UINT32*,SNPS3PROCESSINFO*);
typedef int (__cdecl *ProcessSetMemoryFunction)(int, UINT32 ,UINT32 ,UINT64 , UINT64, int, BYTE*);
typedef int (__cdecl *ProcessGetMemoryFunction)(int, UINT32 ,UINT32 ,UINT64 , UINT64, int, BYTE*);


Vous avez besoin de toutes ces fonctions pour démarré toute edition de mémoire avec votre soft. Ne pas oublié de crée la fonction la structure pour le SNPS3PROCESSINFO*.

Etape 3:

Maintenant c'est important de localisé les fonctions dans le dll , Nous allons utilisé le fameux "GetProcAddress" :
Code:

InitTargetCommsFunction InitTargetComms = (InitTargetCommsFunction) GetProcAddress(hlib, "SNPS3InitTargetComms");
ConnectFunction Connect = (ConnectFunction) GetProcAddress(hlib, "SNPS3Connect");
DisconnectFunction Disconnect = (DisconnectFunction) GetProcAddress(hlib, "SNPS3Disconnect");
ProcessListFunction ProcessList = (ProcessListFunction) GetProcAddress(hlib, "SNPS3ProcessList");
ProcessAttachFunction ProcessAttach = (ProcessAttachFunction) GetProcAddress(hlib, "SNPS3ProcessAttach");
ProcessContinueFunction ProcessContinue = (ProcessContinueFunction) GetProcAddress(hlib,"SNPS3ProcessContinue");
ProcessInfoFunction ProcessInfo = (ProcessInfoFunction) GetProcAddress(hlib, "SNPS3ProcessInfo");
ProcessGetMemoryFunction GetMemory = (ProcessGetMemoryFunction) GetProcAddress(hlib, "SNPS3ProcessGetMemory");
ProcessSetMemoryFunction SetMemory = (ProcessSetMemoryFunction) GetProcAddress(hlib, "SNPS3ProcessSetMemory");


Etape 4 : Vous êtes maintenant prêt a utilisé les fonctions SN System dans votre soft.

Connectique :

Code:

//Connection////////////////////////////
int target=0xfffffffe; //target default
InitTargetComms();
Connect(target,NULL);


Attacher le Process :
Code:

//Attach/////////////////////////////////
ProcessList(target,&puCount,puProcessID);
ProcProcessAttach(target, 0,*puProcessID);
ProcProcessContinue(target, *puProcessID);
ProcProcessInfo(target,*puProcessID,&puBufferSize,pProcessInfo);


Get Memory & Set Memory :
Code:

//Get/SetMemory/////////////////////////
GetMemory(target,0,*puProcessID,(pProcessInfo->ThreadIDs)[0],uAddress,nCount,pBuffer);
SetMemory(target,0,*puProcessID,(pProcessInfo->ThreadIDs)[0],uAddress,nCount,pBuffer);



Conseils :

- Vous avez besoin d'appeler InitTargetComms() dans tout vos threads , même si votre ps3 est connecté.
- Vous pouvez crée d'autre GetMemory & SetMemory pour réduire le nombre d'argument.
- Toutes ces fonctions retourne un int , Ceci peux vous dire si c'est un succés ou non , un succés va être une valeur positive , un échec une négative.

Dernière choses pour les developpeur C# & VB.Net :


- J'ai codé une Bibliothèque de classe pour écrire les fonctions facilement avec moins d'argument dans votre application :
- Téléchargez mon DLL ici =>

- Ajoutez-le comme référence , et ajoutez dans votre form la liason : using PS3Lib;
- Comme ça vous pourrez l'utilisez dans votre application avec des fonctions refaite par moi même , exemple PS3.SetMemory(Address, Bytes);

Code Source :

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

// Copyright © iMCSProduction 2013.
// Thanks to BuC-ShoTz to have contributed to this.
// Visit if you're English.
// Visit if you're French.
// Follow me -

namespace PS3Lib
{
public class PS3
{
public static uint ProcessID;
public static uint[] processIDs;
public static string snresult;
private static string usage;
public static string Info;
public static PS3TMAPI.ConnectStatus connectStatus;
public static string Status;
public static string MemStatus;

public static void ConnectDebug()
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
}

public static void GetStatus()
{
Status = Convert.ToString(PS3TMAPI.GetConnectStatus(0, out connectStatus, out usage));
}

public static void ProcessAttach()
{
PS3TMAPI.GetProcessList(0, out processIDs);
ulong uProcess = processIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);
Info = "The Process 0x" + ProcessID.ToString("X8") + " Has Been Attached !";
}

public static void SetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, Bytes);
}

public static void GetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref Bytes);
}

}
}


Liens de la release :
Merci A BuC-ShoTz FM|T Enstone Et
 
Prend le tutoriel et refait le à ta manière, je trouve que il n'y a pas d’intérêt à le recopier à 100% ! ;)
 
Oui copier coller de la French modding Team pas besoin de cacher la source
 
-_- j'ai mis la source c'est bon ..... et je la cache pas sa le fait tout seul ...
 
tu lui a demander pour le mette ici ?
 
je ne trouve pas le SN systems peut tu m aider sil te plait
 
pe ton voir le la librairie du sn sytem
 
merci tu partage mec essaye de refaire le TUTO a ta manière sa sera mieux:ok:
 
du deja vu mais sa sert toujours pour les nouveau merci a toi
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut