Omisión de la comprobación del emisor contra SocialClub (para b2060 a b2802)
-
9 julio 20231.0issuer-check-bypass-against-socialclub_1688929077_348594.zip
Importante No para el nombre del mod
Este mod cambiará su nombre de "EXE Integrity Bypass Against RGL" (el próximo nombre no se ha decidido en realidad, primero déjame profundizar más en el problema), que también se aplicará a los archivos desde la v1.1. alloc8or nos contó información más precisa sobre por qué GTA5.exe no comprueba la integridad con socialclub.dll en versiones anteriores a la compilación 2824 del juego.
Acerca de
Este programa ASI omite/desactiva la comprobación del emisor que realiza GTA5.exe, que se realiza comunicándose con socialclub.dll. Como resultado, puedes evitar que el juego se niegue a iniciarse con el código de error 16 por usar una versión del exe anterior a la compilación 2824 del juego. Con este complemento, puedes desensamblar GTA5.exe para b2699 o anterior mientras ejecutas entornos de juego funcionales para una de las versiones, donde está presente la información RTTI del compilador. No necesitas usar este ASI para v1.0.2824.0 o versiones más recientes, porque el juego no comprueba el emisor en absoluto en esas versiones.
Para tu información, no puedes parchear el archivo exe con un editor hexadecimal en absoluto porque casi toda la parte del código del juego está encriptada antes del lanzamiento del juego. Este ASI no desactiva ninguna función del club social, por lo que puedes usarlas (por ejemplo, usar tus personajes para GTA Online en el Modo Director). Debes usar este mod con el último RGL!
No puedes acceder a GTA Online con el cargador ASI instalado desde la v1.0.1032.1 (v1.3.9), por lo que no tienes que preocuparte por acceder a él accidentalmente.
Sin modificar el código del juego, el juego prueba si el emisor de socialclub.dll es "Entrust Code Signing Certification Authority — L1D, Entrust Code Signing CA — OVCS1", o "DigiCert SHA2 Assured ID Code Signing CA" en una etapa anterior (se llamará durante la primera película del logotipo de Rockstar y solo una vez, la comprobación del emisor no se realizará en las compilaciones de juegos más recientes). Este plugin simplemente evita que el juego escuche el resultado de la consulta. Parece que Rockstar Games comenzó a probar incluso en las versiones de Steam y EGS a partir del 4 de abril de 2023 (en UTC) a más tardar.
¿Qué te hizo crear esto y no alloc8or?
En primer lugar, alloc8or podría hacer este tipo de herramienta si este problema comenzara a ocurrir para todos los que intentan usar una versión no actualizada hasta la primera mitad de 2022, pero no ha estado tan activo en el modding de GTA desde principios de 2023. Otro desarrollador brillante que está muy familiarizado con la informática se volvió inactivo, al igual que MulleDK19 (quien es uno de los desarrolladores que hizo RAGE Plugin Hook y ha estado inactivo desde mayo de 2021). Ninguno de ellos proporcionó códigos fuente de sus trabajos u ofuscó su código (para la ofuscación, estoy seguro de que las obras de MulleDK19 o LMS se ven afectadas, pero tal vez no sea el caso de alloc8or).
En segundo lugar, no se permite discutir sobre cosas pirateadas en 5Mods y algún moderador eliminó silenciosamente uno de mis masajes que incluía inocentemente cómo evitar esta comprobación con cosas pirateadas en el Discord de 5Mods.
Por esas razones, pensé que debería crear este programa para proporcionar una forma limpia que se permita discutir y esto nos facilitará la inspección de versiones antiguas usando un desensamblador sin la ayuda de cosas contaminadas/sucias (y necesitaré esta herramienta para agregar toneladas de funciones avanzadas en ScriptHookVDotNet también, donde soy el líder del proyecto desde mayo de 2023). Intenté crear esto y logré hacerlo como en 6 horas, incluido el sistema de registro simple y una prueba simple de compatibilidad.
Instalación
Simplemente suelta ExeIntegrityBypassAgainstRGL.asi en tu carpeta de Grand Theft Auto V.
Puedes ver ExeIntegrityBypassAgainstRGL.log creado o actualizado si el ASI se ejecuta y el exe tiene el permiso para escribir en la carpeta raíz (no actualizará el registro si el permiso es insuficiente ya que el registro no es obligatorio).
Necesitarás archivos update.rpf apropiados (al menos archivos de script ysc apropiados) para el GTA5.exe que planeas usar (por ejemplo, update.rpf para la compilación 2699 del juego para el b2699 de GTA5.exe) porque los hashes para las funciones nativas en realidad se cambian en la mayoría de las actualizaciones (pero no hay actualización de hash nativo entre b2612 y b2699 al menos).
Requisitos
El cargador ASI. No se necesita Script Hook V.
Aunque esto requiere Visual C++ Redistributable 2019+ para ejecutarse, ya deberías tener Visual C++ Redistributable 2019 instalado cuando instalaste Rockstar Games Launcher.
Nota
Para evitar ejecutar el código sin parchear, este programa intentará parchear con otro hilo y el hilo creado mantendrá el hilo principal suspendido hasta que se complete el parche (en realidad, tomado de GTAVLauncherBypass, pero cambié el código para suspender solo un hilo). Entonces, si el parche falla a la mitad, es posible que el juego no se inicie infinitamente.
Si Rockstar parchea esta herramienta al ni siquiera iniciar un proceso de GTA5.exe si el exe no es el último, esta herramienta no puede hacer nada ya que la herramienta no se puede cargar en ese caso (dudo que eso suceda ya que la comprobación del emisor es menos restringida en las compilaciones de juegos posteriores según lo que dijo alloc8or en el estado anterior).
Una vez que finaliza el trabajo de parche, el ASI se separará de GTA5.exe y ya no ocupará la memoria ni tendrá el bloqueo para el archivo ASI (¡estilo Ninja!), lo que te permitirá eliminar el archivo ASI mientras el juego se está ejecutando en caso de que te lo estés preguntando.
Esta herramienta es compatible con todas las versiones que usan Rockstar Games Launcher (probado en b2060, b2372, b2699 y b2802 de la versión de Steam), pero no es compatible con ninguna versión que use el antiguo sistema de Social Club (por lo que esta herramienta no funciona en b1868 o anterior). Puedes usar esta herramienta en v2824 o más reciente, pero esta herramienta no ofrece nada significativo que el juego vanilla completo en ese caso, ya que la comprobación del emisor no existe en absoluto en esas versiones.
Código fuente
Se puede encontrar en GitHub, que tiene licencia bajo la licencia BSD Zero Clause, donde básicamente puedes hacer cualquier cosa contra el código fuente, pero no una dedicación de dominio público (por lo que algunas partes como Google pueden usar una parte del código) y sin responsabilidad ni garantía.
No quiero mantener esto en secreto o protegido con derechos de autor. Alguna parte del código fuente es redundante (en la v1.0) ya que hice esta herramienta un poco a toda prisa.
Por 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