.bin File ausführen
-
unsinnig schrieb:
drakon schrieb:
bei onlinespiele bzw spielen mit nem online multiplayerteil will man oft die aktuellste version erzwingen.
Wobei man das eigentlich mit nem einfachen versionscheck handhaben koennte.
Ist aber ned so komfortabel als wenn sich alles wie von selbst aktualisiert.Das ist aber ein wenig komisch. Lass das Spiel einfach nicht starten, wenn eine alte Version da ist und regle das über den Launcher, den du als "normalen" Pfad angibst. Fertig. Wenn da jemand die exe holt, dann ist der ja selber schuld, wenn er rumpfuscht.
Also das kann ja auch nicht der Grund sein..Mehr Code wo unnötig wenn Launcher explizit gestartet werden muss.
Du versteckst also lieber deine Dateien, als eine einfache Zeile Code in dein Projekt einzufügen?
if (version < expectet_version) throw "To old version!";
-
Na es geht ja nicht nur um die Version, aber mir geht es eigentlich eher so ums hintergrundwissen wie sowas funktioniert. Weil mit unbenennen und ausführen das is nicht so einfach. Manchmal ist es verschlüsselt wie schon gesagt wurde oder der Entry Point ist verschoben.
Aktuellstes Beispiel. Warhammer Online:
-
Schurke schrieb:
Na es geht ja nicht nur um die Version, aber mir geht es eigentlich eher so ums hintergrundwissen wie sowas funktioniert. Weil mit unbenennen und ausführen das is nicht so einfach. Manchmal ist es verschlüsselt wie schon gesagt wurde oder der Entry Point ist verschoben.
Aktuellstes Beispiel. Warhammer Online:
Da ist die exe aber nicht versteckt, oder was auch immer. Ich nehme mal an, dass, wenn du über den Launcher starten musst der einfach einen string übergibt, der dann überprüft wird. ( Du kannst einer exe ja Parameter übergeben ).
Und wenn du normal startest wird halt nix übergeben und somit ev. abgebrochen.
-
drakon schrieb:
Da ist die exe aber nicht versteckt, oder was auch immer. Ich nehme mal an, dass, wenn du ueber den Launcher starten musst der einfach einen string uebergibt, der dann ueberprueft wird. ( Du kannst einer exe ja Parameter uebergeben ).
Und wenn du normal startest wird halt nix uebergeben und somit ev. abgebrochen.das waere aber ein unzureichender Kopierschutz... schliesslich muss man nur in Erfahrung bringen, mit welchen Argumenten die Anwendung gestartet wurde...
-
zwutz schrieb:
drakon schrieb:
Da ist die exe aber nicht versteckt, oder was auch immer. Ich nehme mal an, dass, wenn du ueber den Launcher starten musst der einfach einen string uebergibt, der dann ueberprueft wird. ( Du kannst einer exe ja Parameter uebergeben ).
Und wenn du normal startest wird halt nix uebergeben und somit ev. abgebrochen.das waere aber ein unzureichender Kopierschutz... schliesslich muss man nur in Erfahrung bringen, mit welchen Argumenten die Anwendung gestartet wurde...
Seit wann geht es hier um einen Kopierschutz? Es gingt einmal darum, dass die Version gecheckt wird und man durch einen Launcher gezwungen wird vorher zu upgraden.
Aber natürlich geht der Kopierschutzt dann halt (beim Launcher) online und checkt da den Account und übergibt die Daten der exe, welche dann decodiert, oder was auch immer..
Die technische Umsetzung ist nicht das Problem. Das Problem ist, wie du schon richtig sagst die sichere (verschlüsselte) Kommunikation, was aber ein ganz anderes Thema ist. Dafür braucht man dann aber auch keinen Launcher.
-
drakon schrieb:
Seit wann geht es hier um einen Kopierschutz? Es gingt einmal darum, dass die Version gecheckt wird und man durch einen Launcher gezwungen wird vorher zu upgraden.
also dem OP ging es um die technik hinter launchern, die eine veraenderte oder irgendwie verschluesselte EXE starten. wozu auch immer.
im endeffekt machen alle kommerziellen kopierschutze genau das. frueheres safedisc hat tatsaechlich eine externe BIN nachgeladen. heutige kopierschutze packen die verschluesselte BIN zusammen mit dem loader/decrypter direkt in eine EXE rein.
die technik dahinter (abgesehen von der decryption) ist eher simpel, da wird IMO einfach speicher allocated, in diesen dann das neue EXE image entpackt, und dann wird der execution pointer oder wie das ding heisst auf den entry point dieser entpackten exe gesetzt.
-
loki1985 schrieb:
[...]
Also so eine Art "Security through obscurity". Hmm. Kein Wunder, dass der Krempel immer so schnell geknackt wird.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
loki1985 schrieb:
...
die technik dahinter (abgesehen von der decryption) ist eher simpel, da wird IMO einfach speicher allocated, in diesen dann das neue EXE image entpackt, und dann wird der execution pointer oder wie das ding heisst auf den entry point dieser entpackten exe gesetzt...
genau sowas meinte ich _ nur wie mache ich das jetzt in c++? oder nach was muss ich da googeln :D?
-
puh, wie du das machst: eher nicht auf die einfache tour. wenn du das wirklich willst, dann wirst du wohl etwas zeit investieren muessen.
kannst dir ja mal quellcode von EXE-packern anschauen, wie dort entpackt und dann auf den neuen speicher verwiesen wird.
@Tachyon: exakt. das einzige was man fruher tun musste war einen breakpoint an der richtigen stelle setzen, den speicher dumpen, und dann die imports korrigieren. war noch nicht so wirklich ein problem.
heutzutage machen die kopierschutze meist eine art VM, sie entpacken nicht die komplette binary in den speicher, sondern nur aktuell genutzte teile, und verschluesseln diese sogar teilweise nach der nutzung wieder... aber auch das laesst sich knacken wie woechentlich bewiesen wird...