Registry benutzen [erledigt]

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

hazumu-kun

Betreff: Registry benutzen [erledigt]

BeitragSo, Aug 16, 2009 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde gerne für ein Spiel, damit Savegames schwieriger zu hacken sind, die win32 Registry nutzen.

Habe auch schon versucht über API was zu regeln.
Dabei ergibt sich aber folgendes Problem:
API funktionen aus der advapi32.dll verlangen die variable in der das registry hadnle abgelegt werden soll als PARAMETER.
Und da BlitzBasic sowas bei API Funktionen nicht unterstützt funkttioniert das nicht Recht.

Habe auch schon versucht durch Angabe eines Bankhandles von einer 8Byte Bank(ist ja streng gesehen der verlangte Byte Pointer auf eine Long variable) das Problem zu lösen, das funktioniert auch nicht recht.

Kennt jemand eine Userlib die mir das Benutzten der Registry mit schreib lese und Schlüsselerstell-Rechten ermöglicht und 100% mit BlitzBasic funktioniert?
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
  • Zuletzt bearbeitet von hazumu-kun am Fr, Aug 21, 2009 17:24, insgesamt einmal bearbeitet

Noobody

BeitragSo, Aug 16, 2009 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit der Bank sollte eigentlich schon funktionieren, allerdings nur, wenn du den Parameter in der DECLS richtig deklariert hast (mit dem * für Banks/Types). Das sähe dann ungefähr so aus: Code: [AUSKLAPPEN]
TolleAPIFunktion( BankParameter* )
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

hazumu-kun

BeitragSo, Aug 16, 2009 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja grade das Problem, die Bank wird nicht angerührt. Immernoch NullBytes als Inhalt.
Und wenn ich mit Dieser Bank dann Ein RegQueryValueEx ausführe killt die API den Compiler wegen falscher Parameter.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

ChristianK

BeitragSo, Aug 16, 2009 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Habe auch schon versucht durch Angabe eines Bankhandles von einer 8Byte Bank(ist ja streng gesehen der verlangte Byte Pointer auf eine Long variable) das Problem zu lösen, das funktioniert auch nicht recht.

Eine Long-Variable ist 4 Byte groß.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

hazumu-kun

BeitragSo, Aug 16, 2009 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Falsch.
Integer ist 4 Byte(32bit),
Long ist 8 Byte(64bit, emuliert).
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Nicdel

BeitragSo, Aug 16, 2009 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Neu (C99-Standard) ist der erweiterte long-Datentyp. long long ist ein 64 Bit (8 Byte) breiter Datentyp, der einen Wertebereich von -9.223.372.036.854.755.807 bis +9.223.372.036.854.755.807 darstellen kann.


Normalerweise ist long aber 4 Bytes groß.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

ChristianK

BeitragSo, Aug 16, 2009 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit wollte ich sagen, dass eine LONG-Variable, wenn sie so im MSDN angegeben wird, nur eine andere Definition für einen 4-Byte-Int ist. Ob das in deinem Fall auch so ist, lässt sich ohne Code schwer beurteilen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

hazumu-kun

BeitragSo, Aug 16, 2009 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
MSDN definiert meines wissen nach INT mit DWORD (Double Word ; Word=2Byte)

@topic:
Keiner hier ders mal mit der Registry zutun gehabt hatte?
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
  • Zuletzt bearbeitet von hazumu-kun am So, Aug 16, 2009 19:55, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSo, Aug 16, 2009 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Anderen Leuten in der Registry herum zu fummeln halte ich nicht für besonders gut Neutral
Savegames kann man durch simplere Methoden vor ungewollten Veränderungen schützen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Aug 16, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Registry ist alles andere als schwierig zu hacken. Einzig eine Alarmmeldung meiner Sicherheitssoftware würde spätestens mein Vetrauen zu deinen Programmen kaputt machen. Wenn du nicht willst das jemand deinen Spielstand oder anderes ändert, dann jage das ganze - zum Beispiel - durch md5 und setz eine Checksumme drauf. Danach werden es Hacker schwer haben und alle sind Glücklich, weil die Daten da hin gespeichert werden wo sie auch hin gehören, nämlich nach GetEnv("APPDATA")
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

ChristianK

BeitragSo, Aug 16, 2009 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@viken_emesh, WORD = 2 Byte und DWORD = 4 Byte Wink
http://msdn.microsoft.com/en-u...30318.aspx
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

hazumu-kun

BeitragSo, Aug 16, 2009 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte trotzdem gerne bei der Registry bleiben, auch als übung wenn ich die mal für was sinnvolles(autostart updater) brauchen kann.
Sagt mir nicht wie ich es anders mache sonder WIE mit der Registry, danke.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

da_poller

BeitragSo, Aug 16, 2009 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
womit ich schonmal weiß wessen games ich nicht spiele..

sorry, aber in der registry anderer hat NIEMAND was zu suchen..

hazumu-kun

BeitragSo, Aug 16, 2009 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann sag mir mal bitte wieso sämtliche auf CD's ausgelieferte Games regKey's schreiben.

Okay ich gebs zu(man wie peinlich):

Mein Info Lehrer, bei dem ich 1er Schüler bin, hatte mich beauftragt einen Netzwerk-Logger zo programmieren.
Folgendes Prinzip:
Über die Proxy-Config auf dem Server wird localhost als proxy eingestellt, heißt konkret: Der ganze Traffic wird über mein Programm laufen und die Url's loggen.
Damit das ganze beim Autostart mitlädt brauch ich entweder Registry oder die Möglichkleit Verknüpfungen im Autostart Ordner anzulegen.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

ChristianK

BeitragSo, Aug 16, 2009 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Für solche Dinge (System, Speichern von Einstellungen) ist die Registry ja auch gedacht. Aber nicht zum Speichern von Savegames oder sogar anderen binären Daten.
Und wenn dir jemand helfen soll, wäre es hilfreich, wenn du ein wenig Code mit deinen bisherigen Versuchen hier postest.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

DAK

BeitragSo, Aug 16, 2009 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
und was is das drama dabei?... warum sagst dus nicht gleich?

bzw, warum machst du nicht einfach einen link in der autostart? ich mein, wenn er dich damit beauftragt hat, dann machst du das ganze legal, hast dafür wohl, so wie das projekt ausschaut, direkten zugriff auf den computer, inklusive den rechten, im autostart was rein zu tun, oder den autostart-key manuell zu setzen.

wozu das ganze von einem prog erledigen lassen?

desweiteren: schau dir an, was komerzielle games da rein schreiben. da steht in der registry nicht mehr drin als das applikationsverzeichnis (für den updater) und vllt noch graphikoptionen oder kleinigkeiten wie zb mit welchen nicknamen du die letzte online-partie gespielt hast. alles in allem vllt 1-2 kb, maximal.

ein savegame in die registry schreiben wäre sehr groß -> würde die registry unnötig zumüllen -> den computer langsamer machen.
und ein registry-savegame hacken is auch nciht schwer.

und wenn mir mein sicherheitssoftware anzeigt, da will was in meiner registry rum pfuschen, vorallem was von nem unbekannteren hobbyprogrammierer, dann wirds geblockt und gelöscht.
Gewinner der 6. und der 68. BlitzCodeCompo

BtbN

BeitragSo, Aug 16, 2009 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
genau 5 sekunden suchen: https://www.blitzforum.de/foru...hp?t=18055

hazumu-kun

BeitragSo, Aug 16, 2009 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, ich denke meine vergeblichen Versuche die Registry zu benutzen sollte reichen:


Notiz: Decls sind alle richtig eingestellt.
Notiz2: Hab den Code schon gelöscht gehabt, hat ja nicht geklappt.
BlitzBasic: [AUSKLAPPEN]

Const HKEY_Local_Machine= keine Ahnung mehr was hier stand
Const REG_SZ= 1

regkey= CreateBank(8)
value= CreateBank(256)

RegOpenKeyA (HKEY_Local_Machine,"\Software\Viken Emesh\test\",regkey)

RegQueryValueEx (regkey,"TestText",0,REG_SZ,value,255)
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

ChristianK

BeitragSo, Aug 16, 2009 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab deinen Code jetzt nicht ausprobiert, aber statt RegOpenKey (aus 16-Bit-Zeiten) benutzt du besser RegOpenKeyEx.
Der letzte Parameter vom Typ PHKEY ist ein Zeiger auf einen Zeiger/Handle, also muss die Bank 4 Byte statt 8 Byte groß sein.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Starwar

BeitragMi, Aug 19, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck dir das an: https://www.blitzforum.de/foru...hp?t=14920
Und auch den Link zur BlitzBasic Seite da...

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group