Il developer 2much4u ha realizzato un nuovo script IDA in python che ci permette di aggiornare gli indirizzi nativi per le nuove versioni di gioco di Grand Theft Auto V.
Rockstar Games randomizza gli hash nativi in ogni nuova versione di GTA V. Gli strumenti di modding hanno bisogno di questi nuovi hash per determinare quale indirizzo chiamare per una data funzione nativa.
Wrote an IDA python script for updating the natives.h for my native caller. Hopefully this will be useful the next time a new PS4 exploit supports a higher version of GTA and I'm not around to update everything myself.https://t.co/jGprBw64wg
— 2much4u (@2much4ux) December 24, 2020
Questo script IDA genererà il file natives.h
per qualsiasi nuova versione di GTA V da utilizzare in progetti come Native Caller o Menu Base. Per maggiori informazioni leggere il file README per Native Caller.
Utilizzo
- Caricare il file EBOOT di GTA V in IDA Pro (7.0+).
- Selezionare File -> File script e selezionare questo script.
- Selezionare un file crossmap.
Un file crossmap è un file di testo che rappresenta una mappa dagli hash nativi di una versione precedente di GTA V agli hash nativi di una nuova versione. Questi possono essere trovati comunemente online con una rapida ricerca su Google per qualsiasi versione di GTA V. Il formato del file dovrebbe essere:
0xOLDHASH,0xNEWHASH
0xOLDHASH2,0xNEWHASH2
0xOLDHASH3,0xNEWHASH3
...
Selezionare la funzione registerNative
Questa è una funzione utilizzata nel binario del gioco per registrare i nativi. Dovrai trovarlo da solo, ma è abbastanza facile da trovare. Per trovarlo, cerca byte con ALT+B
in IDA per uno qualsiasi dei nuovi hash nel file crossmap.
Qualsiasi hash andrà oltre i nativi di SYSTEM
. Vedere più informazioni sui nativi di SYSTEM
più avanti. Dopo aver cercato il modello di byte, dovresti trovare un risultato simile a questo:
...
lea rsi, sub_1065770 # native function
mov rdi, 97C63D95072367BAh # hash searched for
call sub_228BC10 # registerNative
lea rdi, loc_1065260
call nullsub_581
lea rsi, loc_1065850 # native function
mov rdi, 0AFEFADC285965BBEh # native hash
call sub_228BC10 # registerNative
lea rdi, sub_1065270
call nullsub_581
lea rsi, sub_1065870 # native function
mov rdi, 89F38C325D9E03E7h # native hash
call sub_228BC10 # registerNative
...
In questo esempio, sub_228BC10
è la funzione registerNative. Questa è la funzione che desideri selezionare quando richiesto da questo script.
Selezione di un file header nativo
Questo è un file natives.h
pulito scaricato da nativedb, è sempre possibile trovare l’ultima versione di questo file su: http://www.dev-c.com/nativedb/natives.h
Questo è tutto! Lo script è finito
Dovresti aspettarti un output da IDA che assomigli a questo:
Found 6166 natives in crossmap
Found 6160 natives in EBOOT
Merged 6140 natives in the maps
Failed to find address for 0xae3fee8709b39dcbL
Failed to find address for 0x64e630faf5f60f44L
Failed to find address for 0x7eec2a316c250073L
Failed to find address for 0x80e4a6eddb0be8d9L
Failed to find address for 0xa306f470d1660581L
Failed to find address for 0x966c2bc2a7fe3f30L
Failed to find address for 0x676ed266aadd31e0L
Failed to find address for 0x77faddcbe3499df7L
newHeader.h created
Unable to replace 8 natives
Il file newHeader.h
può essere trovato nella stessa directory del database IDA. Il valore esadecimale 0xDEADBEEF
verrà inserito per qualsiasi nativo per cui questo script non è in grado di trovare un indirizzo di funzione.
(Facoltativo) Correggere l’intestazione da utilizzare in Native Caller
Per l’utilizzo in PS4 GTA V Native Caller, dovrete andare a sostituire:
#include "types.h"
#include "nativeCaller.h"
All’interno dell’output newHeader.h
di questo script con:
#include "invoker.h"
Prima di sostituire il file PS4-GTA-V-Native-Caller/gtaPayload/include/natives.h
.
Note sui nativi SYSTEM
Alcune mappe incrociate includono nativi SYSTEM
e altre no. Questi nativi non cambiano gli hash tra le versioni di GTA V e vengono registrati utilizzando una funzione diversa rispetto a registerNative annotato in precedenza.
Questo script troverà automaticamente questa diversa funzione di registrazione e troverà i nativi SYSTEM
utilizzando un elenco di hash codificato.
Download: PS4 GTA V Native Updater
Download: Source code PS4 GTA V Native Updater
Fonte: twitter.com