
Venom is a library that meant to perform evasive communication using stolen browser socket
Venom è una libreria C++ pensata per offrire un modo alternativo di comunicare: invece di creare un socket che possa essere ricondotto al processo, crea un nuovo processo Edge separato e "nascosto" (non viene mostrata alcuna finestra) e ruba uno dei suoi socket per eseguire le operazioni di rete. Edge è stato scelto perché è un browser installato su ogni Windows 10+ e non desta sospetti.
Il vantaggio di creare un processo browser separato è che non c'è il pericolo che venga chiuso accidentalmente dall'utente e che i socket esistano ma non comunichino con alcun sito, evitando così possibili collisioni.

Venom è un singolo file header C++, quindi puoi semplicemente includerlo nel tuo progetto e usarlo come segue:
Venom venom = Venom(L"127.0.0.1", 3110);
if (!venom.VenomObtainSocket()) {
std::cerr << "[ - ] Failed to get socket." << std::endl;
venom.~Venom();
return -1;
}
// Do your stuff here.
...
venom.~Venom();
Puoi vedere l'esempio che mostra come usare il socket per inviare o ricevere dati.
Il motivo principale per cui funziona, o per essere precisi, perché l'invio e la ricezione con un socket (possibilmente connesso) avvengono senza problemi, è descritto nella documentazione delle funzioni.
Prima di approfondire, ho scelto di creare un nuovo processo Edge piuttosto che usarne uno già aperto per 2 motivi principali:
Non puoi sapere se il socket del browser è già in uso e potrebbe causare una collisione se tenti di ricevere dati.
Un processo che hai creato può essere chiuso per errore in qualsiasi momento dall'utente, interrompendo la comunicazione.
Ora che hai compreso i motivi alla base della creazione di un nuovo processo, posso spiegare perché posso usare un socket già esistente (che potrebbe essere connesso) per comunicare con un target (senza connetterlo ad esso).
Inoltre, puoi leggere che hanno anche scritto "... Anche se il socket senza connessione è stato precedentemente connesso a un indirizzo specifico, il parametro to sovrascrive l'indirizzo di destinazione ..." il che significa che possiamo sovrascrivere il target con sendto.