| Autor |
Beitrag |
Airtrox
      
Beiträge: 109
Delphi 7
|
Verfasst: Do 04.03.10 22:40
Hey,
ich habe ein ziemliches Problem:
Ich speichere einige globale Variablen mit Werten in einem Programm, welche auch sichtbar sind. Nun gibt es Programme wie TSearch ( www.downloads.de/det...erspiele&id=3510 ) womit man die Werte ändern kann, was natürlich nicht sein darf.
Gibt es eine Möglichkeit, das zu unterdrücken? Die Variablen (Integer) müssen auf jeden Fall ausgegeben werden, dürfen aber keinesfalls veränderbar durch irgendwelche Programme sein. Hat jemand einen Vorschlag?
Moderiert von Narses: Topic aus Dateizugriff verschoben am Fr 05.03.2010 um 11:18
Moderiert von Narses: Titel geändert, war: "Variablen nicht veränderbar".
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Do 04.03.10 22:46
na ja, wenn man etwas im SPeicher verändert, kann man da nix machen. Es sei denn, du speicherst die Variable redundant an mindestens einem anderen Ort... Was einem natürlich auch nichts hilft, wenn mit TSearch explizit diese Zahl verändert werden soll. Du kannst natürlich um Trainern entgegenzuwirken, was ich mal vermute, was du möchtest, die Zahl z.B. mit ienem Faktor multipliziert im Speicher aufbewahren.
|
|
Airtrox 
      
Beiträge: 109
Delphi 7
|
Verfasst: Do 04.03.10 23:25
Nunja, das Problem ist, das ich das nicht bedacht habe und viele Variablen habe, die auch schon oft ausgegeben werden. Alle zu multiplizieren sowie dividieren wäre nicht sehr arbeitserleichternd.
|
|
P@u1
      
Beiträge: 117
|
Verfasst: Do 04.03.10 23:35
wenn es sich nur um integers handelt, könntest du die evtl. intern als strings speichern und dann wenn sie benutzt werden konvertieren oder beide sowohl als integer als auch als string und dann immer abgleichen und wenn nen unteschied festgestellt wird weißt du das "gecheatet wurde".
Oder kriegt TSearch das trotzdem hin?
|
|
Airtrox 
      
Beiträge: 109
Delphi 7
|
Verfasst: Fr 05.03.10 01:05
Ja ich denke es ändert auch strings und bei vielen var bringt eigentlich auch ein faktor nichts. Eine onchange procedure für variablen bräuchte man 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 05.03.10 01:40
Was ist dein Problem? dass ein anderes Programm deinen Speicher ausliest und verändert?
|
|
Airtrox 
      
Beiträge: 109
Delphi 7
|
Verfasst: Fr 05.03.10 08:17
Ganz genau ist das Problem.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 05.03.10 14:57
Nimm allen andern Prozessen die Zugrifsberechtigungen auf deinen Prozess weg und debugge dann deinen Prozess mit dir selbst.
Teil 1: Dadurch erschwerst Du den Zugriff auf deinen Speicher auf normalem Wege
Teil 2: Damit verhinderst Du, dass fremde Programme sich über den Umweg der Debug Privilegien Zugriff auf deinen Speicher holen.
Kann man mit einem Teil 3 (Kernel-Hook auf die Prozess- und Speicher-Funktionen) zwar noch komplettieren, aber i.d.R. braucht man das nicht. uall hat für die ersten beiden Teile mal ein Beispiel gemacht, wie man das mit wenig Source umsetzt. Ging dort speziell zwar drum, das Beenden des Prozesses zu verhindern, aber es geht halt auch für andere Zwecke zu verwenden.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Airtrox 
      
Beiträge: 109
Delphi 7
|
Verfasst: Fr 05.03.10 16:20
|
|
der organist
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: Fr 05.03.10 19:26
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
SvenAbeln
      
Beiträge: 334
Erhaltene Danke: 3
|
Verfasst: Fr 05.03.10 19:55
@ der organist Tolle Verschlüsselung, alle Zahlen >= 22 sprengen den Integer  und warum der Umweg über die Strings?
Ohne die ganzen Stringoperationen sieht das dann so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| function OnCrypt(Number:Integer):Integer; var factor:Integer; begin factor:=Random(9998)+1; Result:=(Number*factor*10000) + factor; end; |
Damit du mit deinem Result bei einem Integer bleibst, darf Number maximal 21 sein.
maxint = 2147483647
( 2147483647 - 9999) / 9999 / 10000 = 21,476884168
|
|
Airtrox 
      
Beiträge: 109
Delphi 7
|
Verfasst: Fr 05.03.10 19:59
Na gut, damit hätte ich eine Verschlüsselung, aber selbst wenn ich den Faktor für die Entschlüsselung speichere, kann dieser wieder ausgelesen werden.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 05.03.10 20:55
Mach das, was BenBE dir empfohlen hat. Ich hab auch mal probiert, einen bestimmten String schwerer auslesbar zu machen. Habe dann mit Verschlüsselungen rumgehampelt und den entschlüsselten String nur lokal in der Methode gehabt, die diesen String benötigt.
Und dann hab ich mal probiert, den mit OllyDbg auszulesen. Selbst für mich als Laien war das dann eine Sache von ein paar Sekunden.
Also: Zugriff von außen erst gar nicht zulassen. Ob das nun besonders sinnvoll ist, weiß ich nicht. Wozu braucht du das denn so unbedingt? Sind das sicherheitskritische Daten?
_________________ We are, we were and will not be.
|
|
der organist
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: Fr 05.03.10 21:50
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 05.03.10 23:27
Um was für ein super wichtiges Programm handelt es sich denn das du so viel Aufwand treibst, um deine Variablen vor Veränderungen von außen zu schützen?
|
|
Airtrox 
      
Beiträge: 109
Delphi 7
|
Verfasst: Sa 06.03.10 02:42
Gausi hat folgendes geschrieben : | | Also: Zugriff von außen erst gar nicht zulassen. Ob das nun besonders sinnvoll ist, weiß ich nicht. Wozu braucht du das denn so unbedingt? Sind das sicherheitskritische Daten? |
Habe ich gelesen, allerdings weiß ich nicht so recht wie ich das umsetzen kann?
|
|