Netzwerkzugriff für Prozess blockieren
-
rofl
-
Hey, ist kein Problem mehr, jetzt besteht kein Zeitdruck mehr, auch wenn ich das Problem trotzdem noch gerne lösen möchte...
Aber ist "rofl" ein konstruktiver Beitrag?
Du meinst damit denke ich jetzt mal frei raus, dass es ziemlich dumm ist, solch eine Fragestellung zu geben, wenn man nicht einmal Ahnung von DLL's hat (oder missverstehe ich das?)
Jedenfalls ist es ja nicht so, dass ich nicht zugeben würde, dass ich noch vor dem Anfängerstadium bin, aber das Hooken von Funktionen beispielsweise ist mir dennoch absolut nicht unbekannt!
Oder bezog sich das "rofl" letzten Endes dann doch darauf, dass ich glauben würde, es gäbe dafür eine bereitgestellte Funktion von Microsoft? In dem Fall kann ich auch nur mit Rofln antworten, weil Microsoft so manche "Malware-Funktion" anbietet.
Oder im letzten Fall, wenn du dich über den gerade überschrittenen Zeitdruck lustig machst... ach vergiss es einfach...
-
Lass mich mal deinen Beitrag auszugsweise zitieren, vielleicht verstehst du dann was ich so lustig finde.
Ich brauche DRINGEND Hilfe, enormer Zeitdruck, nur noch eine Stunde.
(...)
ich suche schon seit einigen Tagen erfolglos (Google & Co.) und hab' jetzt nur noch eine Stunde Zeit.p.S.: die Uhrzeit (22:17) ist natürlich auch ideal für dringende Fragen.
-
Miikku schrieb:
Hm.. generell keine schlechte Idee, aber dazu reicht die Zeit nicht... (zumal ich von DLL's ehrlich gesagt noch kaum Ahnung hab')
geht es nicht auch irgendwie praktischer mit einer einfachen WinAPI Funktion oder so?Keine Ahnung und dann eine Aufgabe mit der man nur mit tiefsten Windows Kenntnissen weiterkommt...
Irgendwie wirklich zum lachen...
-
Du könntest die Ports die das Programm benutzt belegen

-
Hey, ich geb' ja zu, dass es ein wenig lächerlich ist, solch eine Aufgabe als vollkommener Anfänger so kurzfristig erledigen zu wollen.
Es ist aber ebenso lächerlich, nachdem ich das zugegeben hatte, noch einmal darauf herum zu hacken!Und jetzt mal @hustbaer: WTH willst du damit sagen? Willst du sagen, dass die Welt unlogisch ist, weil ich schon seit tagen nach der Lösung suche, auf die ich unbedingt selber kommen wollte und dann, wo feststeht, dass ich gescheitert bin (1 std vor Release) in einem Forum nachfrage und solch bekloppte Antworten bekomme? (jetzt mal Icematix und evtl. Chrises ausgenommen)
Es ist übrigens kein blödes Datum für ein Release (jetzt kombiniere bitte einmal 1 und 1 (ich geb' dir einen Tipp: es hat mit Datum und Uhrzeit zu tun))*PS: Ist es denn keinem Foren-Spammer möglich, VOR dem Posten zu denken? Ich mag dieses Forum eigentlich und habe auch schon gute Erfahrung gemacht, aber das hier ist mein Ideal-Beispiel eines vollkommen destruktiven und verblödeten Verlaufs.
Tschuldigung @Forum, aber ich werde hier nie wieder etwas fragen, wenn ich nicht innerhalb DIESES Threads wieder vom gegenteil überzeugt werden kann!~*Lösung: 11.11. um 11.11 (pm), falls du's immer noch nicht sehen solltest: es ist die Uhrzeit in diesem Jahr mit den meisten Einsen, was auch die Werbung beinhaltete, was ein leicht manipulierendes Hilfsmittel ist, damit auch du es dir merken kannst und falls du immer noch nicht durchblickst: 11 Uhr am Morgen ist ein normaler 16-Jähriger in der Schule!~
@Chrises: Hm... das Programm ist ausschließlich ein Client, der benötigt ja nicht einmal Ports auf meinem Computer. Und davon abgesehen: Wie sollte ich herausbekommen, welche Ports das Programm braucht? Wie schon erwähnt: ich habe nur den Prozess als Handle...
-
^^du könntest z.b. die wichtigsten socket-apis (WSASocket usw.) aushebeln. entweder mit 'detours' oder damit: http://www.codeproject.com/KB/system/Paladin.aspx

-
Das Gewünschte macht doch eine Personal Firewall schon. Hat da WIndows nicht sogar eine eingebaut, die man nur benutzen muß?
-
Und jetzt mal @hustbaer: WTH willst du damit sagen? Willst du sagen, dass die Welt unlogisch ist, weil ich schon seit tagen nach der Lösung suche, auf die ich unbedingt selber kommen wollte und dann, wo feststeht, dass ich gescheitert bin (1 std vor Release) in einem Forum nachfrage und solch bekloppte Antworten bekomme? (jetzt mal Icematix und evtl. Chrises ausgenommen)
Nein. Ich will damit sagen, dass es ordentlich doof von dir war so lange zu warten. Also nicht die Welt ist unlogisch, sondern du.
Es ist übrigens kein blödes Datum für ein Release (jetzt kombiniere bitte einmal 1 und 1 (ich geb' dir einen Tipp: es hat mit Datum und Uhrzeit zu tun))*
Wo hab ich irgendwas von irgendeinem Release geschrieben?
-
Das einfachste ist: Lass das Programm unter einem definierten User laufen, welchem Du das Recht auf "Netzwerk" entziehst.
-
@Jochen Kalmbach
Ich glaube er such was, was er programmatisch machen kann, ohne dafür gleich User anlegen zu müssen.
Und ich vermute er sucht was, womit er einen Prozess beeinflussen kann, den er garnicht selber gestartet hat.Und ich vermute weiter, dass er irgendwas krummes machen will

-
Also ich hab' mich jetzt gerade noch einmal hinter das Problem geklemmt und festgestellt, dass das zu hookende Programm die "Netapi32.dll" und die "Ws2_32.dll" eingebunden hat. Problem ist jetzt noch, herauszufinden, welche der Netzwerkfunktionen das Programm benutzt. Welche Funktionen sind hier gängig, hat jemand einen Ratschlag oder so?
Ich weiß bisher, dass folgende Funktionen nicht verwendet werden:
NetUseAdd, send, listen, NetMessageBufferSend, WSASendZugegebener Maßen hab' ich bei den meisten dieser Funktionen keine Ahnung, was sie genau machen... ich hab' einfach in dem MSDN herumgestöbert und diese Verbindungsmöglichkeiten gefunden. Weil ich jetzt keine mehr finde würde ich gerne wissen, ob jemand von euch sich mit all diesen Internetfunktionen auskennt und noch eine Methode weiß, die das Programm benutzen könnte.
-
Miikku schrieb:
Also ich hab' mich jetzt gerade noch einmal hinter das Problem geklemmt und festgestellt, dass das zu hookende Programm die "Netapi32.dll" und die "Ws2_32.dll" eingebunden hat. Problem ist jetzt noch, herauszufinden, welche der Netzwerkfunktionen das Programm benutzt. Welche Funktionen sind hier gängig, hat jemand einen Ratschlag oder so?
Ich weiß bisher, dass folgende Funktionen nicht verwendet werden:
NetUseAdd, send, listen, NetMessageBufferSend, WSASendsend zum Senden von BYTEs
recv zum Empfangen von BYTEs
WSAStartup um Winsock zu starten
socket um einen Socket zu erstellenNormalerweise reicht es denn Aufruf von WSAStartup oder socket zu blockieren bzw die Funktionen zu verändern.
(Könnte man mit WriteProcessMemory machen, dafür müsste man jedoch den Prozess erst debuggen und die richtigen Speicherstellen finden oder eben den Pointer zur Funktion holen um dann diese direkt zu ändern)
-
Hab's jetzt geschafft. Falls nochmal irgendwer das Problem haben sollte: Eine mögliche Lösung ist die recv und socket (thx @SuperD) Funktion so zu manipulieren, dass hinter dem Funktionsaufruf ein ret 0010 und ein ret 000c folgt.
Bei mir sah das dann so aus:int iValue = 0x0010C2; //ret 0010 für recv WriteProcessMemory(hProcess, (LPVOID) 0x753747E1, &iValue, (SIZE_T) 3, NULL); iValue = 0x000CC2; //ret 000c für socket WriteProcessMemory(hProcess, (LPVOID) 0x75373F02, &iValue, (SIZE_T) 3, NULL);und das wiederherstellen dann so:
int iValue = 0xEC8B55; //originalcode von recv WriteProcessMemory(hProcess, (LPVOID) 0x753747E1, &iValue, (SIZE_T) 3, NULL); iValue = 0xEC8B55; //originalcode von socket WriteProcessMemory(hProcess, (LPVOID) 0x75373F02, &iValue, (SIZE_T) 3, NULL);Ich denke zwar, dass es manchmal Fehlerursache sein könnte, weil der Returnwert ohne Error-Code von recv nicht legitim ist, aber für meine Zwecke funktioniert es.
-
Miikku schrieb:
Ich denke zwar, dass es manchmal Fehlerursache sein könnte, weil der Returnwert ohne Error-Code von recv nicht legitim ist, aber für meine Zwecke funktioniert es.
Es wird ein Wert zurueckgegeben, auch wenn die Funktion nicht wirklich durchlaufen wird (Der Wert im EAX Register ist der Returnwert).
Der einzig mögliche Fehler den ich durch deinen Code sehe ist, dass wenn die WS2_32.dll eine andere Base-addresse besitzt deine Funktionspointer zu socket und recv nicht mehr stimmen!
-
Es wird ein Wert zurueckgegeben, auch wenn die Funktion nicht wirklich durchlaufen wird (Der Wert im EAX Register ist der Returnwert).
Aber weil dieser Wert nicht dem Wert entspricht, der er eigentlich sein sollte und es ja sein kann, dass da gerade etwas drinnensteht, was als Returnwert nicht legitim ist könnte es ja sein, dass das manipulierte Programm nur für die möglichen Rückgabewerte eine Möglichkeit bereitgestellt hat und sonst abstürtzt (das war zumindest meine Überlegung)
-
Hey, ich geb' ja zu, dass es ein wenig lächerlich ist, solch eine Aufgabe als vollkommener Anfänger so kurzfristig erledigen zu wollen.
Es ist aber ebenso lächerlich, nachdem ich das zugegeben hatte, noch einmal darauf herum zu hacken!Willkommen im Internet.
WTH willst du damit sagen?
Wahrscheinlich nur das, was er geschrieben hat. Wage Interpretationen sind unangebracht.
Tschuldigung @Forum, aber ich werde hier nie wieder etwas fragen, wenn ich nicht innerhalb DIESES Threads wieder vom gegenteil überzeugt werden kann!
Wir koennen auf dich verzichten, immerhin willst du etwas ... Was soll der scheiss, willst du uns erpressen?
-
Meine endgültige Lösung also jetzt nochmal mit der Kritik von SuperD umgesetzt:
Um den :
int hookWinFncOffset(char *chLibName, char *chFncName){ HINSTANCE hDLL = LoadLibrary(chLibName); unsigned int iOffset = (unsigned) GetProcAddress(hDLL, chFncName); return(iOffset); }Dann zum Blockieren:
void deactivateOnlineMode(HANDLE hProcess){ int iValue = 0x0010C2; WriteProcessMemory(hProcess, (LPVOID) (hookWinFncOffset("Ws2_32.dll", "recv")+0x02), &iValue, (SIZE_T) 3, NULL); iValue = 0x000CC2; WriteProcessMemory(hProcess, (LPVOID) (hookWinFncOffset("Ws2_32.dll", "socket")+0x02), &iValue, (SIZE_T) 3, NULL); }Und wieder zum Freigeben:
void activateOnlineMode(HANDLE hProcess){ int iValue = 0xEC8B55; WriteProcessMemory(hProcess, (LPVOID) (xTR_hookWinFncOffset("Ws2_32.dll", "recv")+0x02), &iValue, (SIZE_T) 3, NULL); WriteProcessMemory(hProcess, (LPVOID) (xTR_hookWinFncOffset("Ws2_32.dll", "socket")+0x02), &iValue, (SIZE_T) 3, NULL); }PS @ knivil "willst du uns erpressen?" ääähhhm wozu denn? Höflich zu sein?
Seit wann wird jemand erpresst höflich zu sein? 