Hier ist ein Beispiel, was ich meine ...
Ich habe einige Anwendungen wie diese gesehen, und ich habe nie ein Beispiel oder eine Erklärung dafür gesehen, wie es funktioniert.
Weiß jemand?
Ein anderes Beispiel ist eine verschlüsselte EXE, die in eine andere eingebettet ist. Es wird extrahiert und im Speicher entschlüsselt, ohne jemals auf der Festplatte gespeichert zu werden, bevor es ausgeführt wird.
Ich habe gesehen, dass man in einigen Anwendungen Piraterie verhindert.
Bearbeiten: Als eine Nebensache funktionieren Programme wie UPX so? Ich habe mir den Code angesehen, aber es ist schwer für mich zu entziffern, und ich frage hauptsächlich aus Neugierde, ich habe keine Notwendigkeit dafür.
Viele Programme, die das tun, werden einfach in% TEMP% dekomprimiert (ich weiß, dass ich das tue), aber die großen Jungs implementieren im Wesentlichen den ausführbaren OS-Loader neu, was:
Zusammenfassend: Das ist eine Menge Arbeit. Wenn Sie interessiert sind, sehen Sie sich die PE-Formatspezifikation an, die .EXE- und .DLL-Dateien beschreibt, und die Funktion VirtualAlloc()
.
Nun, wenn Sie wissen, wo der Offset zum Einstiegspunkt einer ausführbaren Datei ist und Sie wissen, welche Parameter benötigt werden, müssen Sie nur die Funktion unter der Adresse "exeBase + entryPointOffset" mit einem Funktionszeiger aufrufen.
Es ist erwähnenswert, dass Betriebssysteme, zumindest auf x86-Systemen, es Ihnen nicht erlauben, Speicher auszuführen, der als Daten markiert ist. Unter Windows beispielsweise kann dies mit dem " Virtual ProtectEx "Funktion, um den Speicher als ausführbar zu markieren.
Tatsächlich war es in der guten alten Zeit ein allgemeines System, um Speicher zu sparen. Sie hätten " Overlays ", so dass Sie Speicherplatz sparen könnten, indem Sie den Code nach Bedarf ein- und auslagern.