Contournement de la vérification de l'émetteur contre SocialClub (pour b2060 à b2802)
-
9 juillet 20231.0issuer-check-bypass-against-socialclub_1688929077_348594.zip
Important - Pas pour le nom du Mod
Ce mod changera de nom de "EXE Integrity Bypass Against RGL" (le prochain nom n'a pas encore été décidé en fait, laissez-moi d'abord examiner la question plus en profondeur), ce qui s'appliquera également aux archives depuis la v1.1. alloc8or nous a donné des informations plus précises sur pourquoi GTA5.exe échoue à vérifier l'intégrité par rapport à socialclub.dll dans les versions antérieures à la build 2824.
À propos
Ce programme ASI contourne/désactive la vérification de l'émetteur effectuée par GTA5.exe, qui se fait en communiquant avec socialclub.dll. En conséquence, vous pouvez éviter que le jeu refuse de démarrer avec le code d'erreur 16 pour l'utilisation d'une version de l'exe antérieure à la build 2824. Avec ce plugin, vous pouvez désassembler GTA5.exe pour b2699 ou antérieur tout en exécutant des environnements de jeu fonctionnels pour l'une des versions, où les informations RTTI du compilateur sont présentes. Vous n'avez pas besoin d'utiliser cet ASI pour la v1.0.2824.0 ou les versions plus récentes, car le jeu ne vérifie pas du tout l'émetteur dans ces versions.
Pour votre information, vous ne pouvez pas patcher le fichier exe avec un éditeur hexadécimal car presque toute la partie du code du jeu est cryptée avant le lancement du jeu. Cet ASI ne désactive aucune fonctionnalité du club social, vous pouvez donc les utiliser (par exemple, utiliser vos personnages pour GTA Online dans le mode Réalisateur). Vous devriez utiliser ce mod avec la dernière version de RGL!
Vous ne pouvez pas accéder à GTA Online avec l'ASI loader installé depuis la v1.0.1032.1 (v1.3.9), donc vous n'avez pas à vous soucier d'y accéder par accident.
Sans modifier le code du jeu, le jeu teste si l'émetteur de socialclub.dll est soit "Entrust Code Signing Certification Authority — L1D, Entrust Code Signing CA — OVCS1", soit "DigiCert SHA2 Assured ID Code Signing CA" à un stade précoce (sera appelé pendant la première vidéo du logo Rockstar et une seule fois, la vérification de l'émetteur ne sera pas effectuée dans les builds plus récentes). Ce plugin empêche simplement le jeu d'écouter le résultat de la requête. Il semble que Rockstar Games ait commencé à tester même dans les versions Steam et EGS à partir du 4 avril 2023 (en UTC) au plus tard.
Qu'est-ce qui vous a poussé à créer ceci et pas alloc8or?
Premièrement, alloc8or aurait pu créer ce genre d'outil si ce problème avait commencé à affecter tous ceux qui essaient d'utiliser une version non récente jusqu'à la première moitié de 2022, mais il n'a pas été très actif dans le modding de GTA depuis le début de 2023. Un autre brillant développeur qui maîtrise tant l'informatique est devenu inactif, tout comme MulleDK19 (qui est l'un des développeurs de RAGE Plugin Hook et est inactif depuis mai 2021). Aucun d'eux n'a cependant fourni les codes sources de leurs travaux ni obfusqué leur code (pour l'obfuscation, je suis sûr que les travaux de MulleDK19 ou LMS sont affectés, mais ce n'est peut-être pas le cas pour ceux d'alloc8or).
Deuxièmement, la discussion de sujets piratés n'est pas autorisée sur 5Mods et un modérateur a silencieusement supprimé l'un de mes messages qui incluait innocemment comment contourner cette vérification avec des éléments piratés sur le Discord de 5Mods.
Pour ces raisons, j'ai pensé que je devais créer ce programme pour fournir une méthode propre qui sera autorisée à discuter et cela nous facilitera l'inspection des anciennes versions à l'aide d'un désassembleur sans l'aide d'éléments souillés/corrompus (et j'aurai besoin de cet outil pour ajouter des tonnes de fonctionnalités avancées dans ScriptHookVDotNet aussi, où je suis le chef de projet depuis mai 2023). J'ai essayé de créer cela et j'ai réussi à le faire en environ 6 heures, y compris le système de journalisation simple et un test de compatibilité simple.
Installation
Déposez simplement ExeIntegrityBypassAgainstRGL.asi dans votre dossier Grand Theft Auto V.
Vous pouvez voir ExeIntegrityBypassAgainstRGL.log créé ou mis à jour si l'ASI s'exécute et que l'exe a la permission d'écrire dans le dossier racine (le journal ne sera pas mis à jour si la permission est insuffisante, car la journalisation n'est pas obligatoire).
Vous aurez besoin des fichiers update.rpf appropriés (au moins des fichiers script ysc appropriés) pour le GTA5.exe que vous prévoyez d'utiliser (par exemple, update.rpf pour la build de jeu 2699 pour le b2699 de GTA5.exe) car les hachages pour les fonctions natives sont en fait modifiés dans la plupart des mises à jour (mais pas de mise à jour de hachage natif entre b2612 et b2699 au moins).
Exigences
L'ASI loader. Script Hook V n'est pas nécessaire.
Bien que cela nécessite Visual C++ Redistributable 2019+ pour fonctionner, vous devriez déjà avoir Visual C++ Redistributable 2019 installé lorsque vous avez installé Rockstar Games Launcher.
Remarque
Pour éviter d'exécuter le code non patché, ce programme essaiera de patcher avec un autre thread et le thread créé maintiendra le thread principal suspendu jusqu'à ce que le patch soit terminé (en fait, repris de GTAVLauncherBypass mais j'ai changé le code pour suspendre un seul thread). Donc, si le patch échoue à moitié, le jeu pourrait ne pas démarrer indéfiniment.
Si Rockstar patche cet outil en ne lançant même pas un processus de GTA5.exe si l'exe n'est pas le plus récent, cet outil ne peut rien faire car l'outil ne peut pas être chargé dans ce cas (je doute que cela arrive car la vérification de l'émetteur est moins restreinte dans les builds de jeu ultérieures selon ce qu'alloc8or a dit ci-dessus).
Une fois le travail de patch terminé, l'ASI se détachera de GTA5.exe et n'occupera plus de mémoire ni n'aura de verrouillage pour le fichier ASI (style Ninja !), vous permettant de retirer le fichier ASI pendant que le jeu tourne si vous vous posez la question.
Cet outil prend en charge toutes les versions qui utilisent le Rockstar Games Launcher (testé sur b2060, b2372, b2699 et b2802 de la version Steam), mais il ne prend pas en charge les versions qui utilisent l'ancien système Social Club (donc cet outil ne fonctionne pas sur b1868 ou antérieur). Vous pouvez utiliser cet outil sur v2824 ou plus récent, mais cet outil n'offre rien de significatif de plus que le jeu vanilla complet dans ce cas puisque la vérification de l'émetteur n'existe pas du tout dans ces versions.
Code source
Peut être trouvé sur GitHub, sous licence BSD Zero Clause License, où vous pouvez faire pratiquement n'importe quoi avec le code source, mais pas une dédicace au domaine public (donc certaines parties comme Google peuvent utiliser des morceaux de code) et sans responsabilité ni garantie.
Je ne veux pas garder cela secret ou protégé par des droits d'auteur. Certaines parties du code source sont redondantes (dans la v1.0) car j'ai créé cet outil un peu à la hâte.
Par kagikn
Important Not for the Mod Name
This mod will be changing its name from "EXE Integrity Bypass Against RGL" (the next name has not been decided actually, let me dig into the issue more first), which will also be applied to archives since v1.1. alloc8or told us more accurate info about why GTA5.exe fails to check the integrity against socialclub.dll in versions older than the game build 2824.
About
This ASI program bypasses/disables the issuer check that GTA5.exe does, which is done by communicating with socialclub.dll. As a result, you can avoid the game refusing to start with the error code 16 for using a version of the exe older than the game build 2824. With this plugin, you can disassemble GTA5.exe for b2699 or older while running working game environments for one of the versions, where compiler's RTTI info is present. You don't need to use this ASI for v1.0.2824.0 or newer ones, because the game don't check the issuer at all in those versions.
For your information, you cannot patch the exe file with a hex editor at all because almost all part of the game code is encrypted before the launch of the game. This ASI does not disable any social club features, so you can use them (e.g. using your characters for GTA Online in the Director Mode). You should use this mod with the latest RGL!
You can't access GTA Online with the ASI loader installed since v1.0.1032.1 (v1.3.9), so you don't need to worry about accessing it by accident.
Without modifying the game code, the game tests if the issuer of socialclub.dll is either "Entrust Code Signing Certification Authority — L1D, Entrust Code Signing CA — OVCS1", or "DigiCert SHA2 Assured ID Code Signing CA" at a earlier stage (will be called during the first Rockstar logo movie and only once, the issuer check won't be done in newer game builds). This plugin just prevents the game from listening to the query result. Looks like Rockstar Games started testing even in Steam and EGS versions starting from April 4th 2023 (in UTC) at the latest.
What made you create this and not alloc8or?
Firstly, alloc8or could make this kind of tool if this issue started to happen for everyone who tries to use a non-latest version until the first half of 2022, but he hasn't been active in GTA modding that much since the beginning of 2023. Another brilliant dev who is familiar with computer science so much got inactive, just like MulleDK19 (who is one of the developers who made RAGE Plugin Hook and has been inactive since May 2021). Neither of them provided source codes of their works or obfuscated their code though (for obfuscation I'm sure works of MulleDK19 or LMS are affected but maybe not the case for alloc8or's).
Secondly, discussing pirating stuff is not allowed in 5Mods and some moderator silently deleted one of my massage that innocently included how to bypass this check with pirated stuff in the 5Mods Discord.
For those reasons, I thought I should create this program to provide a clean way that will be allowed to discuss and this will make us easier to inspect old versions using a disassembler without the help of tainted/dirty stuff (and I will need this tool to add tons of advanced features in ScriptHookVDotNet too, where I am the project lead since May 2023). I tried to create this and managed to do like in 6 hours including the simple log system and a simple testing for compatibility.
Installation
Simply drop ExeIntegrityBypassAgainstRGL.asi into your Grand Theft Auto V folder.
You can see ExeIntegrityBypassAgainstRGL.log created or updated if the ASI runs and the exe has the permission to write to the root folder (won't update the log if the permission is insufficient as logging is not mandatory).
You will need appropriate update.rpf files (at least appropriate ysc script files) for the GTA5.exe you are planning to use (e.g. update.rpf for game build 2699 for the b2699 of GTA5.exe) because hashes for native functions are actually changed in most updates (but no native hash update between b2612 and b2699 at least).
Requirements
The ASI loader. Script Hook V is not needed.
Although this requires Visual C++ Redistributable 2019+ to run, You should have Visual C++ Redistributable 2019 installed already when you installed Rockstar Games Launcher.
Note
To avoid executing the unpatched code, this program will try to patch with another thread and the created thread will keep the main thread suspended until the patch completes (actually yoinked from GTAVLauncherBypass but I changed the code to suspend only one thread). So if the patch fails half done, the game may not get started infinitely.
If Rockstar patch this tool by not even launching a process of GTA5.exe if the exe is not the latest one, this tool can do nothing since the tool can't be loaded in that case (I doubt that will happen since the issuer check is less restricted in later game builds according to what alloc8or said in the above state).
After the patch job is finished, the ASI will detach itself from GTA5.exe and will not occupy the memory or have the lock for the ASI file any longer (Ninja style!), letting you remove the ASI file while the game is running in case you are wondering.
This tool supports all the versions that use Rockstar Games Launcher (tested in b2060, b2372, b2699, and b2802 of Steam version), but this does not support any versions that use the old Social Club system (so this tool doesn't do the job in b1868 or earlier). You can use this tool in v2824 or newer, but this tool does not offer anything meaningful than the complete vanilla game in that case since the issuer check doesn't exist at all in those versions.
Souce Code
Can be found on GitHub, which is licensed under BSD Zero Clause License, where you can do basically anything against the source code but not a public domain dedication (so some parties such as Google can use some piece of code) and without liability and warranty.
I don't want to keep this thing secret or protected with copyright. Some part of source code is redundant (in v1.0) since I made this tool in a bit of a hurry.
By kagikn