Seite 2 von 3

Verfasst: 02.10.2006 16:00
von Kaeru Gaman
hm...

bestimmt gibts ne möglichkeit, eine .exe komplett zu wrappen,
dass heißt, du erstellst eine neue exe, die am anfang den zwangsparameter abfragst,
und bindest die alte exe komplett mit ein.

so ähnlich macht das die CBS, damit ihre Games auf den Heft-CDs nich auf Win2000 laufen.

eine andere möglichkeit wäre mit Rename und RunProgram zu arbeiten:

Code: Alles auswählen

RenameFile("rsmdn07sys.dll","spiel.exe")
RunProgram("spiel.exe","","",#PB_Program_Wait)
RenameFile("spiel.exe","rsmdn07sys.dll")

Verfasst: 02.10.2006 16:00
von mx03
:? naja stimmt aber trozdem gibt es eine möglichkeit die exe zu schützten ohne einen prozess im hintergrund laufen zu lassen?

Verfasst: 02.10.2006 16:06
von #NULL
vermutlich nicht.
sowas ähnliches wollte vor kurzem erst jemand..
http://www.purebasic.fr/german/viewtopi ... sc&start=0

Verfasst: 02.10.2006 16:14
von mx03
und wie kann ich eine exe komplett einbinden? brauch ich da einen exe joiner?

Verfasst: 02.10.2006 16:15
von Frogger
am besten mit includebinary
schau dazu in die hilfe

Verfasst: 02.10.2006 16:16
von Kaeru Gaman
wie ich oben sagte, die exe komplett wrappen.
da ich aber nicht weiß, wie der standard-mäßige einsprung-punkt ist,
kann ich dir dazu nichts näheres sagen.
wenn eine .exe ganz einfach binary ist und von der ersten adresse an abgearbeitet wird,
geht das so ungefährt:

Code: Alles auswählen

; hier den sicherheits-check

CallFunctionFast(*Game)

DataSection
Game:
IncludeBinary "spiel.exe"
EndDataSection
aber wie gesagt, genaues weiß ich nich.

allerdings musst du doch für deinen cheat-stopper sowieso nen hintergrundprozess haben,
also könntest du den rename-trick gleich integrieren...

Verfasst: 02.10.2006 16:24
von Frogger
Also das mit CallFunctionFast(*Game) funktioniert schonmal nicht.
Auch wenn man ?Game schreibt.

Aber würde mich auch interessieren wie man eine EXE, die in einer EXE ist, starten kann ohne sie vorher auf die Festplatte zu kopieren.

Verfasst: 02.10.2006 23:56
von Thorium
Frogger hat geschrieben:Also das mit CallFunctionFast(*Game) funktioniert schonmal nicht.
Auch wenn man ?Game schreibt.

Aber würde mich auch interessieren wie man eine EXE, die in einer EXE ist, starten kann ohne sie vorher auf die Festplatte zu kopieren.
Ich denke nicht dass das so leicht ist. Den Einsprungpunkt kann man aus dem PE-Header auslesen aber das reicht ja net. Man muss all die Dinge tun die normal der Loader des Betriebssystems macht, z.b. alle vom Spiel benötigten DLL's laden.

EDIT: Allerdings verstehe ich den Sinn nicht, warum das Spiel ohne Anti-Cheatclient nicht zu starten sein soll. Wenns ein Client ist, gibt es auch einen Server zu dem er sich verbindet. Wenn sich zum Spielserver nun jemand verbindet aber der Anti-Cheatclient verbindet sich net zum Anti-Cheatserver dann musst du den doch nur vom Server kicken. Am besten noch mit ner Nachricht das er sich deinen Anti-Cheat-Client runterladen soll.

Verfasst: 03.10.2006 00:12
von winduff
hmm folgender Vorgang wäre doch möglich:

- Neue .exe erstellen, die eine Angehongene Datei entpackt (in temp) und gleich öffnet - jenachdem ob erlaubt (siehe programmparameter oder halt passwort...) - ... nächster Punkt erklärt näheres ;)

- notepad.exe dranheften, also via einem der Packlibraries die hier rumlungern

- originale notepad.exe löschen, neue Datei umbenennen nach: notepad.exe

So kanst du nun die notepad.exe starten, in wahrheit startet dein Programm. Nun kannst du damit machen was du willst, nur bei "erlaubter" Funktion wird die "echte" notepad.exe ausm Programm entpackt und wohin auch immer geschoben....


ICh hoffe ich habs einigermaßen verständlich erklärt :)

Verfasst: 03.10.2006 00:17
von Thorium
winduff hat geschrieben: - Neue .exe erstellen, die eine Angehongene Datei entpackt (in temp) und gleich öffnet - jenachdem ob erlaubt (siehe programmparameter oder halt passwort...) - ... nächster Punkt erklärt näheres ;)
Aber das ist zu leicht zu umgehen. Ich kann mir ja einfach die .exe aus dem Tempordner kopieren, während das Spiel läuft. Dann hab ich die ungeschützte .exe. Das ist ziemlich leicht zu machen, da es Programme gibt, welche die Dateisystemaktivitäten von anderen Prorgammen protokollieren.