
Last Updated on 17 Settembre 2019 by Roberto De Pedrini
Per le aziende che distribuiscono ed installano il proprio software sui sistemi dei clienti, non è ovviamente consigliabile lasciare i propri sorgenti “incustoditi” su quei sistemi.
Ma anche senza installare i sorgenti, un utente “evoluto” potrebbe accedere al codice semplicemente attivando il debug per programmi compilati con opzioni di incorporazione del sorgente DBGVIEW(*SOURCE / *LIST / *ALL). D’altra parte, compilare i programmi senza questa opzione rende complicate le operazioni di debug (che prima o poi inevitabilmente capitano…).
Fin dalla 7.1, IBM ha reso disponibile una nuova opzione su tutti i comandi di compilazione di programmi e moduli ILE; il parametro Chiave di codifica debug (DBGENCKEY) permette di proteggere il source con una sorta di “password” che permette di distribuire dei programmi perfettamente debuggabili senza che altri possano accedere al codice sorgente (a meno di conoscere la chiave di codifica).
Proviamo a compilare un programma specificando questa opzione:
Creazione oggetto RPG ILE SQL (CRTSQLRPGI)
Immettere le scelte e premere Invio.
File di stampa . . . . . . . . . PRTFILE QSYSPRT
Libreria . . . . . . . . . . . *LIBL
Visualizzazione di debug . . . . DBGVIEW *source
Chiave di codifica debug . . . . DBGENCKEY DeBuGKeY
Profilo utente . . . . . . . . . USRPRF *NAMING
Profilo utente dinamico . . . . DYNUSRPRF *USER
Sequenza di ordinamento . . . . SRTSEQ *JOB
Come tutte le password, anche la chiave di codifica debug è sensibile alla differenza fra maiuscole e minuscole.
Per “ingannare” il debugger ora rinominiamo il sorgente; diversamente, sentendo che il programma è stato compilato sullo stesso sistema e trovando il sorgente, la sessione di debug si avvierebbe normalmente con la visualizzazione del source.
RNMM FILE(MDUCA1/QRPGLESRC) MBR(TESTR06) NEWMBR(TESTR06$)
Avviando ora il debug per questo programma, viene richiesta la chiave di codifica:
Immissione chiave di decodifica
File origine . . : QRPGLESRC Modulo . . . . . : TESTR06
Libreria origine : MDUCA1 Libreria . . . . : MDUCA1
Membro origine . : TESTR06
Vista corrente: Vista elenco ILE RPG
Immettere la chiave di decodifica e premere invio.
Fine
F3=Fine F12=Annull
Se non si immette la chiave, si potrà soltanto fare un debug “alla cieca”…
Visualizzazione origine modulo
Programma: TESTR06 Libreria: MDUCA1 Modulo: TESTR06
(L'origine non è disponibile.)
La schermata di richiesta ammette al massimo tre tentativi di inserimento della chiave, dopo tre errori la chiave non viene più richiesta e si entra direttamente in modalità debug “oscuro”.
Grazie a questa caratteristica, è possibile avviare in sicurezza sessioni di debug locali o remote senza rischiare che qualcuno possa “curiosare” nel proprio codice.