Nun, wir sollten zur Ausgangsfrage zurück kommen. Es scheint mit UPX heute im Allgemeinen wohl eher keine Probleme mehr zu geben.
Den Eindruck habe ich auch, denn so richtig Stress gibt es (zumindest aktuell) wohl nicht mit UPX. Also könnte man das Thema eigentlich abhaken, wenn sich nicht noch jemand mit gravierenden neuen Erkenntnissen meldet.
Welche Maßnahmen man zum Software-Schutz ergreifen kann, ist in der Tat spannend und ich bin just in diesem Moment an dieser Fragestellung in einem Projekt dran, aber das sollten wir - wenn überhaupt - separat besprechen.
Mich interessiert das Thema schon. Es gab hier (oder war es woanders, ich weiß und findes es nicht mehr) mal einen Thread der sich ausgiebig damit beschäftigt hat. Im Endeffekt läuft es wohl darauf hinaus, dass man das Debuggen so schwer wie möglich machen muss, weil nahezu alle anderen Möglichkeiten ins Leere laufen.
Als kleines Beispiel mal die Standardvorgehensweise, ein Passwort nicht inhaltlich, sondern dessen Hash zu speichern. Bei der Eingabe vergleicht man dann den Hash des Passwortes mit dem gespeicherten (womöglich verschlüsselten) Hash. Man glaubt, dass das sicher ist, weil der Hash nicht zurückberechnet werden kann. Einen Angreifer kümmert das gar nicht. Der biegt entweder die Funktion in der Echse um (dauert etwa 1 Minute und wird bei "lokal orientierten Cracks" gerne gemacht), oder nimmt einen Passwort-Pool von den meisten sagen wir mal 20 Millionen Passwörtern, generiert daraus die Hashes und schaut dann nach, welcher zum Hash passt. Das eigentliche Passwort braucht er dann gar nicht mehr. Dieser Mehraufwand wird dann praktiziert, wenn mehrere Leute in den Genuss des Zugangs kommen sollen.
Die Generierung von effektiven Schutzmechanismen nützt also nur was, wenn man genau weiß, wie Cracker/Hacker/Angreifer denken und arbeiten. Den schlimmsten Fehler den man machen kann ist glaube ich zu denken, dass man eine "sichere" Methode gefunden hat, Angreifer abzuwehren. Auch davon (oder darüber) könnte ich einige Lieder singen. Vor Jahren hatte ich z.B. mal sensible Daten in einer verschlüsselten Nexus-Datenbank gespeichert. Der Hersteller hat mir vorgerechnet, wieviel Jahre ein Angreifer über BruteForce brauchen würde, die Datenbank zu knacken. Ich glaubte mich in Sicherheit. Dann habe ich die Datenbank einem Bekannten aus England zur Überprüfung per E-Mail geschickt. Eine Viertelstunde später war die Datenbank geknackt. Die logische Erklärung warum das so schnell geht, und warum die Aussage des Herstellers nicht mal das Papier auf dem sie gedruckt war wert ist, hat mich auf den Boden der Tatsachen zurückgeholt.
Aber, das wäre dann jetzt wirklich ein eigenes Thema