
Venom ist eine Bibliothek, die dazu dient, ausweichende Kommunikation mithilfe gestohlener Browser-Sockets durchzuführen.
Venom ist eine C++-Bibliothek, die eine alternative Möglichkeit zur Kommunikation bieten soll: Anstatt einen Socket zu erstellen, der zum Prozess zurückverfolgt werden könnte, erstellt sie einen neuen „versteckten“ (es wird kein Fenster angezeigt) abgekoppelten Edge-Prozess (Edge wurde gewählt, weil es ein Browser ist, der auf jedem Windows 10+ installiert ist und keinen Verdacht erregt) und stiehlt einen seiner Sockets, um die Netzwerkoperationen durchzuführen.
Der Vorteil der Erstellung eines abgekoppelten Browser-Prozesses besteht darin, dass keine Gefahr besteht, dass er versehentlich vom Benutzer geschlossen wird, und die Sockets zwar existieren, aber nicht mit einer Website kommunizieren, wodurch mögliche Kollisionen vermieden werden.

Venom ist eine einzelne C++-Header-Datei, sodass du sie einfach in dein Projekt einbinden und wie folgt verwenden kannst:
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();
Du kannst das Beispiel sehen, das zeigt, wie der Socket zum Senden oder Empfangen von Daten verwendet wird.
Der Hauptgrund, warum es funktioniert, oder genauer gesagt, warum das Senden und Empfangen mit einem (möglicherweise verbundenen) Socket ohne Probleme funktioniert, liegt in der Dokumentation der Funktionen.
Bevor ich das näher erläutere, habe ich mich aus zwei Hauptgründen dafür entschieden, einen neuen Edge-Prozess zu erstellen, anstatt einen bereits geöffneten zu verwenden:
Du kannst nicht wissen, ob der Browser-Socket bereits verwendet wird, und es könnte zu einer Kollision kommen, wenn du versuchst, Daten zu empfangen.
Ein Prozess, den du erstellt hast, kann jederzeit versehentlich vom Benutzer geschlossen werden, was deine Kommunikation unterbrechen würde.
Nachdem du die Gründe für die Erstellung eines neuen Prozesses verstanden hast, kann ich erklären, warum ich einen bereits vorhandenen Socket (der möglicherweise verbunden ist) verwenden kann, um mit einem Ziel zu kommunizieren (ohne ihn mit diesem zu verbinden).
Außerdem kannst du lesen, dass sie auch geschrieben haben: „... Selbst wenn der verbindungslose Socket zuvor mit einer bestimmten Adresse verbunden wurde, überschreibt der to-Parameter die Zieladresse ...“ was bedeutet, dass wir das Ziel mit sendto überschreiben können.