Client für Remote Shell



  • theta schrieb:

    WTF soll das __asm Zeugs???

    Gute Frage. Fehlt da nicht auch ein pop ebx beim ersten __asm? Es ist immer eine ganz schlechte Idee was auf den Stack zu legen und NICHT wieder abzuholen. Zumindest sollte man es irgendwo wieder runter holen wenn man es nicht mehr braucht. Damit kann man sein ganzes OS aus dem Tackt bringen wenn man es an der falschen Stelle macht.

    Ansonsten schließe ich mich auch dem Vorredner an. ^^



  • theta schrieb:

    WTF soll das __asm Zeugs???

    Edit1: Ausserdem sollst Du im Client das Socket wieder schliessen. Und auch WSACleanup(..) mal wider aufrufen.

    Edit2: Ausserdem, warum rufst Du StartServer(..) rekursiv auf? Eine Schleife würde genügen. Anders wirst Du dann per Gelegenheit mal einen Stackoverflow kriegen.

    Ok Socket schließen, so etwa?:

    else
    {
      printf("Verbunden mit 127.0.0.1..\n");
    }
      // HIER WEITERMACHEN!!
        closesocket( s );
        WSACleanup();
      getchar();
      return 0;
    

    Bin ziemlicher Anfänger. Versuch aber mein Bestes...

    Skalli schrieb:

    theta schrieb:

    WTF soll das __asm Zeugs???

    Gute Frage. Fehlt da nicht auch ein pop ebx beim ersten __asm? Es ist immer eine ganz schlechte Idee was auf den Stack zu legen und NICHT wieder abzuholen. Zumindest sollte man es irgendwo wieder runter holen wenn man es nicht mehr braucht. Damit kann man sein ganzes OS aus dem Tackt bringen wenn man es an der falschen Stelle macht.

    Ansonsten schließe ich mich auch dem Vorredner an. ^^

    Hab es so gemacht:

    __asm
        {
            push ebx
            mov ebx, s
    	    pop ebx  //hier eingefügt
        }
        s = accept( s, NULL, NULL );//Accept Client
        __asm
        {
            push ebx
            call DWORD PTR [closesocket]//Close if error.
            pop ebx
        }
    

    Nur wie bekomme ich das nun mit dem Client hin, dass er die Remote Shell steuern kann?

    mfg skully



  • Ja, aber warum zur Hö*** schreibst Du nicht C oder C++ Code um das Socket zu schliessen im Fehlerfall?



  • theta schrieb:

    Ja, aber warum zur Hö*** schreibst Du nicht C oder C++ Code um das Socket zu schliessen im Fehlerfall?

    Ich wollte mit Inline-Assembler experimentieren. Der Code ist übrigens auch nicht von mir. Ich versuche ihn nur nachzuvollziehen...



  • Ich habe mich noch mal informiert und glaube, dass ich etwas mit sog. "Named Pipes" schreiben muss. kennt sich da evtl. jmd. mit aus?



  • Ich habe mich noch mal informiert und glaube, dass ich etwas mit sog. "Named Pipes" schreiben muss.

    Warum glaubst Du das?

    kennt sich da evtl. jmd. mit aus?

    Ja... aber da gibts sicher noch andere (z.B. Jeffrey Richter oder Charles Petzold)...

    Simon



  • theta schrieb:

    Ich habe mich noch mal informiert und glaube, dass ich etwas mit sog. "Named Pipes" schreiben muss.

    Warum glaubst Du das?

    kennt sich da evtl. jmd. mit aus?

    Ja... aber da gibts sicher noch andere (z.B. Jeffrey Richter oder Charles Petzold)...

    Simon

    Kannst Du nicht auch was dazu beitragen? Wäre nett...



  • Will mir denn keiner helfen? 😕 😞



  • Ok, dann welche Literatur empfiehlt ihr mir hier?



  • __asm
        {
            push ebx
            mov ebx, s
            pop ebx  //hier eingefügt
        }
    

    ist absoluter Quatsch. Du solltest Assembler schon verstehen wenn du es benutzt.

    Erst ebx auf den stack pushen, dann den socket nach ebx laden und sofort wieder ebx poppen - was soll das denn?


Anmelden zum Antworten