Seite 2 von 2

Verfasst: 23.11.2004 17:05
von Kaeru Gaman
ich denke, das wäre heute auchnoch möglich. man braucht halt den genauen einspungpunkt, ich hab keine ahnung, ob der bei ner mit PB erzeugten exe wirklich das erste byte ist und ob das überhaupt so sein muss.

aber ein CALL(*pointer) muss es doch geben, oder ?

Verfasst: 23.11.2004 17:07
von Robert Wünsche
Das mit dem pointer:
Das geht !(siehe onerror-library beispiele)
Das mit dem entpacken geht bestimmt auch und entschlüsseln sowiso.
Dann muss man "nur noch" die entpackten daten auf einen speicherplatz legen und den pointer drauf verbiegen.
Rein theoretisch.
Aber praktisch.: So wie ich pb kenne, wirds gleich abstürzen :mrgreen: .

Verfasst: 23.11.2004 17:16
von wichtel
das hat weniger mit PB zu tun, als mit Windows, das solche Spielchen gar nicht mag. (zumindest NT, 2000, XP)

Verfasst: 23.11.2004 17:23
von Kaeru Gaman
stimmt, jetzt wo du's sagst.

man müsste wohl den speicherbereich als code-segment deklarieren. (frag mich nicht wie das geht)

das liegt aber glaubich an der cpu-architektur (ab 386) und deren speicherverwaltung, und nicht an windows. die neuen versionen achten nur stärker drauf als die alten. (naja, sicher bin da nicht, ob das stimmt, was ich da erzählt hab)

Verfasst: 23.11.2004 17:32
von pvmichael
wichtel hat geschrieben: Du wolltest aber einen Programmcode mit einem PB programm irgendwoher holen (DATA, File, wasauchimmer), in den Speicher legen
Nicht direkt, natürlich existiert das Programm in der Ursprünglichen Form auf der Festplatte. Es sollte dann halt irgendwie in den Arbeitspeicher entpackt, entschlüsselt und dort gestartet werden können.
wichtel hat geschrieben: und dann irgendwie den Programpointer darauf verbiegen so wie das auf dem C64 in der Steinzeit möglich war. Und das geht wohl nicht. Oder ist nicht sonderlich bekannt...
Ja, genau. Damals ging sowas total einfach. Man konnte praktisch vor dem eigentlichen Programm einen Sprung an das Ende des Originalprogrammes machen, welches dann am Schluß das Originalprogramm startet. So wurden allerdings auch etliche Viren programmiert :-(

Auf jeden Fall komme ich dann wohl nicht drum rum, ein temporäres File auf der Festplatte abzulegen :-/

Verfasst: 23.11.2004 17:41
von wichtel
das war das Ergebnis des letzten Threads dieser Art den ich verfolgt habe.
Ich mache das genauso.

-ermittleln des tmp dirs mit env variablen
-prüfen auf volle rechte
-datei ablegen, starten
-aufräumen

bisher tut das.

Verfasst: 23.11.2004 18:17
von Lars
Das ganze in den Speicher zu packen und dort auszuführen geht mit [c]CallFunctionFast()[/c].

Das Argerliche ist nur, dass in Zukunft (und, wenn ich mich recht
erinnere, bei XP SP2 schon, "normaler" Speicher nicht ausführbar ist, da
muss ein bestimmtes Flag gesetzt sein, damit das geht. Ist also nicht so
einfach :)