Programm im Speicher entpacken/entschlüsseln und Ausführen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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 ?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Robert Wünsche
Beiträge: 243
Registriert: 29.08.2004 12:46
Wohnort: Irgendwo im nirgendwo
Kontaktdaten:

Beitrag 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: .
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag von wichtel »

das hat weniger mit PB zu tun, als mit Windows, das solche Spielchen gar nicht mag. (zumindest NT, 2000, XP)
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
pvmichael
Beiträge: 144
Registriert: 29.08.2004 17:59
Wohnort: Rosenheim
Kontaktdaten:

Beitrag 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 :-/
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag 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.
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag 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 :)
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Antworten