CRC32 exe giochi Teknoparrot
Inviato: 17/05/2020, 23:02
Teknoparrot ha un sistema di riconoscimento dei giochi utilizzando il CRC32 degli esegubili dei giochi stessi.
Purtroppo non sembra usare un CRC32 "classico" (come quello che si vede nei programmi di compressione tipo WinZIP, WinRAR, 7Z) ma un qualcosa di diverso che non riesco a comprendere viste le mie scarse competenze in programmazione.
qualcuno dei nostro programmatori (@motoschifo , @Gothrek , altri???) mi può dare una mano a come decodificarli?
qui https://github.com/teknogods/OpenParrot ... Detect.cpp trovate il metodo usato per l'identificazione GameDetect::DetectCurrentGame()
dove viene assegnato un valore alla variabile crcResult e attraverso un costrutto Switch viene identificato il gioco
il problema è che secondo me crcResult non contiene il CRC come noi lo conosciamo
il valore di crcResult viene assegnato attraverso una funzione GetCRC32 che trovate definita qua https://github.com/teknogods/OpenParrot ... /Utils.cpp
a complicare un po' le cose nel case deafult dello switch viene calcolata una variabile newCrcResult che è a sua volta sottoposta ad uno switch
questa nuova variabile è quella alla quale vorrebbero convertire tutti i metodi di identificazione, c'è infatti una nota:
// TODO: move all game detection bound to crcResult immediately below to use the newCrcResult switch at end with its new CRC instead.
riuscite a darmi una mano a risalire ai CRC dei file corretti?
Purtroppo non sembra usare un CRC32 "classico" (come quello che si vede nei programmi di compressione tipo WinZIP, WinRAR, 7Z) ma un qualcosa di diverso che non riesco a comprendere viste le mie scarse competenze in programmazione.
qualcuno dei nostro programmatori (@motoschifo , @Gothrek , altri???) mi può dare una mano a come decodificarli?
qui https://github.com/teknogods/OpenParrot ... Detect.cpp trovate il metodo usato per l'identificazione GameDetect::DetectCurrentGame()
dove viene assegnato un valore alla variabile crcResult e attraverso un costrutto Switch viene identificato il gioco
il problema è che secondo me crcResult non contiene il CRC come noi lo conosciamo
il valore di crcResult viene assegnato attraverso una funzione GetCRC32 che trovate definita qua https://github.com/teknogods/OpenParrot ... /Utils.cpp
a complicare un po' le cose nel case deafult dello switch viene calcolata una variabile newCrcResult che è a sua volta sottoposta ad uno switch
questa nuova variabile è quella alla quale vorrebbero convertire tutti i metodi di identificazione, c'è infatti una nota:
// TODO: move all game detection bound to crcResult immediately below to use the newCrcResult switch at end with its new CRC instead.
riuscite a darmi una mano a risalire ai CRC dei file corretti?