Hey,
Je me suis rendu compte que des personnes (Anglophones) avait fait un "PS3Lib Dumper" qui permet de récupérer les offsets des applications utilisant mon PS3Lib par une dll modifié. Actuellement il est possible d'empêcher ça en injectant le code source de la dll disponible sur GitHub au programme en question en tant que classe, mais il faut qu'a chaque mise à jour vous adaptez mes sources c'est pas le plus pratique pour certains, et surtout beaucoup ne préfère pas toucher la dll.
Donc je publie cette fonction qui détecte si la dll chargé est bien la bonne, à mettre dans votre application ou vous voulez:
Le MD5 utilisé dans la fonction est pour la version officielle PS3Lib v4.4, si vous utilisez votre propre PS3Lib modifié vous devrez mettre le hash de votre dll (md5.fr).
Il faudras juste changer le hash lors de la PS3Lib v4.5.
Cette méthode peut aussi fonctionner sur d'autre dll en changeant le nom de la cible.
La fonction s'utilise comme ceci:
Le check est à mettre ou vous voulez dans votre application.
N'oubliez pas d'obfusquer votre application, car sans protection du source ce check peut être viré en quelques secondes.
Libre à vous d'adapter cette fonction, ou de l'amélioré j'ai juste fait un simple test, je n'ai pas vérifier si il y a des failles étant donné que je développe presque pas de programmes RTE en C# (ou bien c'est privé) donc j'ai fait cette fonction rapidement pour vous.
Enjoy ;-)
Je me suis rendu compte que des personnes (Anglophones) avait fait un "PS3Lib Dumper" qui permet de récupérer les offsets des applications utilisant mon PS3Lib par une dll modifié. Actuellement il est possible d'empêcher ça en injectant le code source de la dll disponible sur GitHub au programme en question en tant que classe, mais il faut qu'a chaque mise à jour vous adaptez mes sources c'est pas le plus pratique pour certains, et surtout beaucoup ne préfère pas toucher la dll.
Donc je publie cette fonction qui détecte si la dll chargé est bien la bonne, à mettre dans votre application ou vous voulez:
Code:
private bool HasCorrectPS3Lib()
{
bool result = false;
string dllname = "ps3lib";
string dllhash = "F0E04EFE7B2AA47711535915E2B1A1AB"; // PS3Lib v4.4
System.Reflection.AssemblyName libRef = (from assembly in System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()
where assembly.Name.ToLower().Equals(dllname.ToLower())
select assembly).FirstOrDefault();
if (libRef != null)
{
string lib = System.Reflection.Assembly.ReflectionOnlyLoad(libRef.FullName).Location;
if (lib != String.Empty)
{
if (File.Exists(lib))
{
byte[] data = File.ReadAllBytes(lib);
string hash = BitConverter.ToString(
System.Security.Cryptography.MD5CryptoServiceProvider.Create().ComputeHash(data))
.Replace("-","")
.ToUpper();
if (hash.Equals(dllhash.ToUpper()))
result = true;
}
}
}
return result;
}
Le MD5 utilisé dans la fonction est pour la version officielle PS3Lib v4.4, si vous utilisez votre propre PS3Lib modifié vous devrez mettre le hash de votre dll (md5.fr).
Il faudras juste changer le hash lors de la PS3Lib v4.5.
Cette méthode peut aussi fonctionner sur d'autre dll en changeant le nom de la cible.
La fonction s'utilise comme ceci:
Code:
if (!HasCorrectPS3Lib())
{
// Vous pouvez mettre/faire ce que vous voulez ici, la fonction à détecter une fausse dll (différente de la votre)
Environment.Exit(0);
}
Le check est à mettre ou vous voulez dans votre application.
N'oubliez pas d'obfusquer votre application, car sans protection du source ce check peut être viré en quelques secondes.
Libre à vous d'adapter cette fonction, ou de l'amélioré j'ai juste fait un simple test, je n'ai pas vérifier si il y a des failles étant donné que je développe presque pas de programmes RTE en C# (ou bien c'est privé) donc j'ai fait cette fonction rapidement pour vous.
Enjoy ;-)
Dernière édition: