Sto lavorando su un'applicazione per la quale ho sviluppato un livello di sicurezza. Utilizza l'ID hardware del disco rigido, l'indirizzo MAC e un'altra chiave seriale hardware, per bloccare il software su un particolare hardware.
Mi sono imbattuto in siti online, che dicevano che dovevo usare nomi abbastanza strani per le procedure / funzioni / variabili nel livello di sicurezza. Ad esempio
function XtDmat: Boolean;
var
x3mat: string;
hhiTms: Interger;
begin
Result := False;
x3mat := GWindosColr; //this returns the HD ID
hhiTms := GalilDriverID; //this gets a controller ID
if (t5gFx=x3mat) and (hhiTms=f4teXX) then Result := True; //match IDs with those saved in the registry
end;
E per la finestra di dialogo dei messaggi:
procedure Tfrm_MainWindow.mxProtectorExpiration( Sender: TObject );
begin
lbl_Remaining.Caption := GetClassPath('xsedfers34;;''kd'); // encrypted value decryted and shown '0 days remained'
lbl_Message.Caption := GetClassPath('qwe23vftTxxx ii gtr'); //decryt and show 'This license has expired'
btn_Go.Enabled := False;
end;
L'ho fatto perché ho utilizzato Delphi DEDE per decompilare il mio codice e trovato anche la chiave di registro "HCKU \ software \ myapplication" in bella vista.
Ora, tuttavia, è diventato difficile
- spiega ai miei compagni di squadra, perché l'ho fatto (cioè i nomi),
- documento in quanto i nomi non hanno senso,
- debug che mi dà mal di testa
Qualcuno può suggerire un buon modo per documentare questo tipo di codice in questo tipo di situazione. Quindi il codice diventa più facile, ma è ancora difficile decompilare. In alternativa, potresti suggerire un offuscatore per Delphi.