Domanda Reversing Protezione software (in c): quali opzioni ?

ElenaDesign

Utente Iron
30 Maggio 2022
1
1
0
2
Ciao, premetto che non sono molto esperta di hacking e cose simili quindi abbiate pazienza... cerco il vostro aiuto qui perchè davvero non saprei dove chiedere...
Programmo plugin audio (VST) in C/C++. Devo rilasciare un plugin commerciale (una dll) con tanto di codice di attivazione e gestione licenza integrato. Vorrei poter quanto possibile ritardare il momento in cui lo vedrò crackato su qualche torrent (dico "ritardare" in quanto so bene che nulla è impossibile da crackare).
Dapprima pensavo ad un sistema di antitamper personalizzato. Lo posso fare benissimo ma è poco pratico, inoltre non previene la decompilazione e con un pò di pazienza un cracker può bypassarlo.
Poi ho sentito parlare di UPX, e piena di entusiamo mi sono informata... delusione delle delusioni, lo stesso programma può anche decomprimere i file compressi ! E il trucchino di alterare gli headers non garantisce alcuna protezione, perchè chiunque con un pò di pazienza li può ricostruire (oltre ad esistere tools adatti allo scopo).
Quindi ho letto di ConfuserEX, e ancora piena di entusiasmo mi sono informata: niente da fare, funziona solo con codice C#/.NET :( :( :( Ma perchè non ne hanno fatto anche e soprattutto una versione per normali programmi scritti in C ??? E vabbè....
Allora ho pensato all'arcinoto Themida... se non esiste niente di free/open source allora pagherò, pazienza... e non poco perchè la licenza più conomica è 200 euro :( Ma il problema è un altro ! Themida oltre ad operare la crittazione del codice ed offrire protezione anti-tamper ed anti debugger (ciò di cui ho bisogno io) offre anche l'offuscamento del codice tramite virtual machine. E sembra che non si possa disabilitare... il problema è che un plugin audio è fatto al 100% di codice time-critical e non posso permettermi di penalizzarne le prestazioni con una virtual machine !! Che poi andrebbe comunque oltre ai miei scopi.

Dunque la mia domanda è: esiste un programma (possibilmente free o comunque di prezzo onesto) in grado di proteggere exe e/o dll prevenendo la decompilazione, offrendo protezione anti tamper e magari anche anti debugging ? Un ConfuserEX per programmi in C sarebbe l'ideale !!!

Grazie mille per ogni risposta pertinente :)
 
Ultima modifica:
Benvenuta sul forum, se ho capito bene ti serve un packer per PE nativi Windows che non incida sulle prestazioni. Se vuoi una "protezione" giusto contro cracker improvvisati puoi usare mpress (tool simile ad UPX senza auto-unpack) + una funzione di antidebug integrata direttamente nella tua dll. Se vuoi una protezione commerciale seria sicuramente Themida e VMProtect sono i più indicati. La VM è senza dubbio la parte più consistente della protezione ma è anche vero che rallenta, potresti trovare un compromesso usando la SDK messa a disposizione da entrambi i prodotti, in pratica puoi marcare aree e singole funzioni da proteggere: potresti abilitare la VM sulla parte di gestione della licenza (che verosimilmente avviene solo una volta durante l'esecuzione del programma) mentre lasciare scoperta la parte time-critical. Le altre funzioni come anti-debug resterebbero attive su tutto il programma senza appesantire troppo il tuo codice. Potresti considerare anche ASPack o ASProtect (il primo più simile a UPX + protezione base, il secondo con VM).
 
Puoi utilizzare VMProtect ad esempio e virtualizzare solo alcune funzioni, non è necessario che virtualizzi l'intero programma, oppure puoi evitare di virtualizzare e fare solo la pack, ma diventerebbe più facile da crackare... se vuoi inserire metodi di antidebug nel codice ce ne sono parecchi, ma senza virtualizzarlo diventa abbastanza facile da crackare, capisco che ti serve velocità quindi ti consiglio di inserire una funzione dedicata solo al controllo della licenza in modo da virtualizzare solo quella e a nascondere i punti dove viene chiamata....
Poi comunque dipende dal tipo di dll ma si può crackare in ogni caso, l'antidebug di VMProtect non è un granche purtroppo .
Se vuoi ti posso aiutare aggiungimi su discord Viloresi#3663