Se la tua dll C++ contiene soltanto il codice per il confronto dei digest forse è ancora più facile estrarlo che dall'applicazione VB.NET. Se lo memorizzi come stringa, andrà a finire nella string table dell'eseguibile, per cui basta un editor esadecimale per portarsi nella zona giusta (si capisce dal fatto che ci sono tutti i messaggi di errore della CRT), poi risulta riconoscibilissimo. Se lo memorizzi direttamente come i byte che lo compongono (invece che con la loro rappresentazione esadecimale) le cose diventano leggermente più difficili, ma basta un disassembler per trovare il punto dove viene fatto il confronto (di nuovo, il lavoro è facilitato dal fatto che la dll non conterrebbe nient'altro).

Ancora meglio: tenendo l'autenticazione separata in una dll, diventa facilissmo rimpiazzare la dll con una che restituisce true in ogni caso, rendendo possibile inserire qualunque codice nell'applicazione principale.