| Autor |
Beitrag |
ebs
      
Beiträge: 213
Suse Linux 9.2, Win 98, Win NT, Win XP, Win for Workgroups, Win XP SP2, Dos 6.1
D3 Prof, D2005 PE, Delphi 2006 Prof.
|
Verfasst: Do 13.10.05 15:12
Hallöchen,
ich habe mir mal Gedanken über die Sicherheit von Variablen im Speicher gemacht. Und zwar habe ich eine ziemlich sensible Datei, die ich verschlüsselt habe. Nun lese ich das ganze in meinem Programm ein, und entschlüssele es und speicher es in die verschiedensten Variablen. Nun wollte ich mal wissen, ob man die unverschlüsselten Variablen aus dem Speicher auslesen könnte. Ist das möglich, und wenn, wieviel Arbeit macht das.
Danke für eure Hilfe
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 13.10.05 15:21
Moin!
Es stellt praktisch kein Problem dar, auf Variablen direkt im Speicher zuzugreifen (gibt doch hier ein "Spiele-Trainer"-Tutorial von en!gma, da wird praktisch genau das gemacht).
Das kannst du auch nicht wirklich verhindern, denn dein Programm soll ja schließlich auch an die Daten rankommen... da hilft nur "Verschleierungstaktik", möglicht viel, weit und umständlich verteilen...
cu
Narses
|
|
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: Do 13.10.05 16:30
Es gibt eine Möglichkeit, anderen Prozessen die Zugriffsrechte wegzunehmen; uall erwähnte aber in fast dem selben Atemzug auch gleich die Technik, mit der man diesen Schutz wieder aufheben kann. Und so schwierig war dessen Umsetzung nicht.
Das einzige, was hier wirklich hilft, sind zwei Dinge:
1. Daten verschleiern (so wie Narses das bereits sagte)
und zweitens (fast noch wichtiger)
2. Daten explizit löschen und versuchen so kurzfristig im RAM zu halten, wie nur irgend möglich ...
Sofern es möglich ist, sogar nur gehashte Daten entschlüsseln und mit den Hashs gegenprüfen, so dass die eigentlichen Daten also nur für Bruchteile im Speicher liegen.
Ansonsten kannst Du nicht wirklich viel machen...
P.S.: Debugger-Detections und Anti-Debugging-Hacks helfen zwar kurzfristig, halten aber keinen ab, der wirklich an deine Infos ran will.
_________________ 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.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 13.10.05 16:45
Ich Denke das, das ziehmlicher Quatch ist - sicher kannst fast jeder ziehmlich einfach an deine Variablen rankommen, daraus besteht doch dein Programm.
Aber um deine Datei wenn sie denn verschlüsselt ist zu knacken bedarv es etwas mehr als 1..2 Variablen aus deinem Programm zu lesen.
Falls nicht - mach die Probe aufs Ex.. (Wer knackt meinen Code)
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 13.10.05 16:51
Mich würde auch mal der Zweck der Übung interessieren. Du hast also eine verschlüsselte Datei, die mit deinem Programm entschlüsselt wird. Was macht das Programm mit den unverschlüsselten Daten? Einfach nur aus Spass im Speicher halten, oder passiert damit was? Werden die evtl. sogar angezeigt?
Mir ist nicht klar, warum der User mit deinem Programm die Datei entschlüsseln darf (bzw. es automatisch passiert), er die unverschlüsselten Daten aber nicht sehen darf...
_________________ We are, we were and will not be.
|
|
ebs 
      
Beiträge: 213
Suse Linux 9.2, Win 98, Win NT, Win XP, Win for Workgroups, Win XP SP2, Dos 6.1
D3 Prof, D2005 PE, Delphi 2006 Prof.
|
Verfasst: Do 13.10.05 18:33
Hallo nochmal,
also in der Datei stehen ungefähr 100000 Zahlen, die in verschieden Arrays stehen. Das Programm errechnet darus extrem komplexe Formeln, die dann zur Darstellung in einem Graphhen dienen. So dauert die Berechnung ca. 1 1/2 Stunden. Ich habe das ganze mal umgeschrieben, sodass das Programm dann immer nur die gewünschte Zahl rausnimmt, allerdings dauert es dann ca. 2 Stunden!!
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Fr 14.10.05 14:31
und warum muss das nun verschlüsselt sein?
kannst ja mal nen kleiens prog mit deinem algo basteln, wo in der textdatei irgendwas verschlüsseltet steht und das entschlüsselte zeigst du dann in nem label an. ich sach dir dann wie du das berechnest 
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
ebs 
      
Beiträge: 213
Suse Linux 9.2, Win 98, Win NT, Win XP, Win for Workgroups, Win XP SP2, Dos 6.1
D3 Prof, D2005 PE, Delphi 2006 Prof.
|
Verfasst: Fr 14.10.05 20:07
Da das ganze verkauft werden soll, und nicht jeder die Zahlen nach seinem Geschmack verändert werden sollen. Außerdem wird nicht der ganze Inhalt angezeigt, sondern nur das, was verändert werden soll. Aber geht mal zurück zu meiner eigentlichen Frage 
|
|
r4id3n
      
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Fr 14.10.05 21:02
Es gibt möglichkeiten ... Such einfach mal nach DebugProtection oder MemDump bei Google ... Soweit ich weiß besteht der Schutz darin, sich in die ReadMem zu hooken und einfach 0 zurück zu geben, sollte der eigene Speicherbereich gelesen werden (Stichwort DLL-Injection) ...
|
|
|