Sì, ci sono diverse possibilità per farlo e una parte molto ampia degli attacchi si basa sull'aggancio della DLL.
E questa è anche la causa, perché le versioni di windows più recenti e più recenti contengono politiche più rigide e più severe sulla gestione delle DLL.
L'obiettivo principale è creare una falso dll, che avvolge solo alcune delle chiamate API nella sua DLL originale, e fa anche qualche altra cosa. L'obiettivo dell'aggressore è in questi casi di caricare la versione contraffatta dell'applicazione da crackare, rispetto alla versione originale.
L'alternativa a questa soluzione è, quando la DLL originale ottiene un qualche tipo di hack binario. È più difficile.
Il funzionamento interno della dll collegata è il seguente:
- aperto: apre anche la dll originale, non modificata con una chiamata
dllopen()
, e trova anche l'indirizzo delle chiamate api
- contiene anche la versione falsa delle chiamate api con hook
Come si può iniettare la dll collegata nell'app?
La soluzione più comune è solo quella di metterlo nella stessa directory dove vive l'exe da agganciare. All'avvio di un eseguibile, windows cerca sempre le sue DLL sempre nella stessa directory. Questo è ciò che viene fatto dalla maggior parte delle crepe di protezione / attivazione della copia del software.
Una seconda possibilità è quella di mettere il wrapper dll da qualche parte nel PERCORSO, ma ancora prima di C:\windows\...
. Le DLL vengono cercate nel PATH, come pure gli eseguibili.
Una terza possibilità è quella di usare un debugger, o l'API di Windows originariamente pensata per il debug. Con esso è possibile manipolare il codice di apertura DLL dell'esecuzione corrente. È anche difficile, anche se è anche molto utile.