Aktuelles Modul von Server laden



  • Hallo,

    ich würde gerne einige Module meines Programms immer vom Server laden, damit sie aktuell bleiben. Dass zwingend eine Internetverbindung benötigt wird, um das Programm ausführen zu können ist jetzt mal nebensächlich.
    Unter anderem geht es um das Abarbeiten von Lizenzkeys. Mir ist bewusst, dass man mit Trick 17 trotzdem an den Code kommt aber in erster Line kann man es ddenjenigen so schwer wie möglich machen.
    Der Code soll nicht auf dem Server ausgeführt werden sondern auf dem Client.

    Wie realisiere ich sowas?!



  • einfach in ein Tempverzeichnis runterladen und ausführen?!

    greetz KN4CK3R



  • Auf den Trichter hätte ich auch kommen können.
    Sowas meinte ich aber nicht. Ich will keine Dateien irgendwo ablegen sondern das Modul direkt in den RAM laden



  • du musst es aber in eine Datei ablegen, alles andere wäre nicht supported.
    Du könntest die Code Section crypten, dann an den Client senden und nach dem Laden des Modules wieder decrypten mit einem Algorithmus den nur dein Client kennt, falls es um Security geht.

    Oder du benutzt nen hack um das Modul manuell in den Prozess zu mappen, was aber wie gesagt nicht supported ist. Überdenke lieber nochmal deine Strategie.





  • THEREAVER schrieb:

    Du könntest die Code Section crypten, dann an den Client senden und nach dem Laden des Modules wieder decrypten mit einem Algorithmus den nur dein Client kennt, falls es um Security geht.

    Nützt ja auch nur, wen zum bsp. gesnifft wird. Aber da es ja auf dem Client ausgeführt wird fängst du somit wider bei 0 an, wenn der Memory context entschlüsselt ist. Dieses Problem ist nicht 100% lösbar.
    Doch du solltest den Stream dennoch verschlüsseln.
    Wenn das Client Programm natürlich nur von dir ausgeführt wird, dann musst du den Stream von CLIENT<->SERVER nur verschlüsseln.
    Danach direkt laden wie von HACK beschriben, wenn du dass umbedingt möchtest. Aber wenn das Programm von einem anderen User ausgeführt werden kann, wären wir wider bei 0.

    lowbyte



  • Da du im Winapi Forum postes geh ich mal davon aus, daß du mit Modulen *.dll Dateien meinst.
    Ich war vor einiger Zeit auch auf der Suche nach Software Protection. Also hab ich mal in einem renomierten Reversengeneering Forum nach dem derzeit am härtesten zu knackendem Softwareschutz gefragt. Mir wurde fast einestimmig Themida genannt, den hab ich dann auch gekauft. Bis jetzt sind noch keine Crack oder Keygens für mein Proggy in den einschlägigen Seiten aufgetacht (jaja einige werden jetzt sagen, war wohl das cracken nicht wert) wie auch immer, ich bin zufriedem mit dem Schutzmechanismus. Das Proggy gibts hier www.oreans.com
    So wie ich es verstanden habe ist das auch kein simpler exe Packer, bei dem danach der Code entpackt im RAM liegt, vielmehr ist es wohl eine kleine VM und das zu schützende Proggy läuft dann auch in dieser VM. Bemerkbar mach es sich beim Programmstart, die ungeschützte exe startet zwischen 0,5 und 1 Sekunde schneller.



  • für exe Dateien gibts für Themida automatische Entpacker... (kA ob für die aktuellste Version)

    greetz KN4CK3R



  • jup... auch für die neueste Version. Die Stärke von Themida liegt nicht im packen (dafür gibt es nun scripts) sondern in der VM. Dafür gibt es immernoch nichts.



  • Hallo,

    ich habe mal ein bisschen rumgebastelt...
    Ich habe mir vorgestellt ein Modul herunterzuladen, es im RAM zu behalten um dann den Code dort auszuführen.

    char Text[] = "\x90\x90\x90\xC2";
    
    HANDLE  File = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, 256, NULL);
    LPCTSTR pBuf = (LPTSTR) MapViewOfFile(File, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(Text)); 
    CopyMemory((PVOID)pBuf, Text, sizeof(Text));
    
    __asm call pBuf;
    

    Ich kann den Code zwar anspringen aber nicht ausführen. Es fehlen die Berechtigungen. Wie kann ich das Problem oben lösen?
    2.Frage) Wie kann ich ne komplette exe via Netzwerk empfangen, in den RAM laden und ausführen OHNE das Dateien geschrieben werden müssen?



  • Das erste Problem hat sich gelöst.

    Hier der Code:

    char Text[] = "\x90\x90\x90\xC2";
    
    	HANDLE  File = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, 256, NULL);
    	LPCTSTR pBuf = (LPTSTR)MapViewOfFile(File, FILE_MAP_ALL_ACCESS | FILE_MAP_EXECUTE, 0, 0, sizeof(Text)); 
    	CopyMemory((PVOID)pBuf, Text, sizeof(Text));
    
    	__asm call pBuf;
    


  • fragt sich nur was DEP dazu sagt^^
    du kannst doch keine weitere exe im gleichen Prozessraum ausführen.
    Du kannst jedoch einen Prozess als dummy starten und in diesen die Sections von deiner exe schreiben, EP setzen und laufen lassen. Ist ein weiterer hack.



  • Also unter Windows 7 64Bit mit DEP(wurde komplett eingeschaltet mit folgendem Tool
    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6f0a6ee-05ac-4eb6-acd0-362559fd2f04)

    beschwert sich da niemand;-)



  • secondsun schrieb:

    Also unter Windows 7 64Bit mit DEP(wurde komplett eingeschaltet mit folgendem Tool
    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6f0a6ee-05ac-4eb6-acd0-362559fd2f04)

    Man sollte schon wissen was DEP genau macht ....


Anmelden zum Antworten