Autor Beitrag
JungerIslaender
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 427
Erhaltene Danke: 5

Win XP
Delphi 7; Delphi 2005
BeitragVerfasst: Di 11.01.11 01:12 
Ich habe eine Komplett fertige Webseite mit css html und javascrip. Nun möchte ich das diese Webseite die sich Lokal auf dem Computer befindet in Delphi dargestellt wird. D.h. der Quelltex der html css un js dateien soll sich im Delphi quelltext befinden.

Das soll folgendem zweck dienen. Die webseite teil eines Programms startet unter anderem ein Programm. Javascript html sind allerdings frei veränderlich und dadurch lässt sich immens viel manipulieren. Das soll verhindert werden.

Nun habe ich keinerlei Ahnung wie ich das angehen soll.


MFG JungerIslaender
Quake User
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: Di 11.01.11 01:25 
- Webseiten können von Browsern dargestellt werden.
- Du könntest eine Browserkomponente in ein Programm einbauen. Ob dann aber die Komponente alle Website-Elemente darstellen kann, ist fraglich.
- Beschreibe doch mal Dein eigentliches Ziel. Dein Konzept ist sicher der falsche Weg.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 11.01.11 07:30 
user profile iconJungerIslaender hat folgendes geschrieben Zum zitierten Posting springen:
Das soll folgendem zweck dienen. Die webseite teil eines Programms startet unter anderem ein Programm. Javascript html sind allerdings frei veränderlich und dadurch lässt sich immens viel manipulieren. Das soll verhindert werden.
Egal wie du die Webseite in deine Exe einbindest (als Ressource, einfach angehängt, als Text in einer visuellen Komponente, ...):
Du kannst dennoch nicht verhindern, dass das jemand manipuliert. Du kannst den Aufwand durch Prüfsummen, ... höher machen, aber verhindern wirst du es nicht.

Da du JavaScript benötigst, hast du bei der Darstellung ja ohnehin eigentlich keine Wahl. TWebBrowser bleibt da im Grunde nur. Die Controls anderer Browser kommen da (bisher) nicht im Ansatz heran.

So, jetzt bleiben noch zwei Sachen zu tun. Erstens musst du den Quelltext der HTML-Seite aus deiner Exe laden und ggf. entschlüsseln und in TWebBrowser laden. Zweitens musst du den Zugriff auf andere Dateiressourcen abfangen und ggf. ebenfalls umleiten bzw. die Daten dazu zur Verfügung stellen. Letzteres habe ich bisher noch nicht gemacht.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 11.01.11 09:03 
Warum eigentlich eine Website in einem Programm einbinden. Nicht mal aus dem Internet laden und dann lokal anzeigen, sondern im Programm selbst speichern? Kann dir Delphi selbst etwa zu wenig, das du darauf zurückgreifen musst? (Worauf ich hinaus will ist das du vielleicht nochmal dein Konzept überdenkst, denn Delphi kann genauso viel wie HTML + CSS + JS).

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
JungerIslaender Threadstarter
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 427
Erhaltene Danke: 5

Win XP
Delphi 7; Delphi 2005
BeitragVerfasst: Di 11.01.11 12:13 
Der Sinn der Aktion soll sei, das fertige Programm was bereits existiert und in javascript geschrieben ist (nicht von mir)zu schützen. Denn momentan ist sämtlicher quellcode offen einsehbar und manipulierbar. Dabei sollen die javascript dateien aber weiter durch den author veränderbar sein sodass er ganz normal weiter arbeiten kann ohne durch die protection gestört zu werden. Eine komplette neugestaltung in einer anderen Sprach könnte sinn machen liegt aber nicht in meinem ermessen. Ich hatte bereits die idee den quelltex in textform in der exe zu speichern und dann zur Laufzeit zu kreiren und danach wieder zu löschen. Allerdings wären die java dateien zur laufzwit dann noch manipulierbar.

Es müsste doch allerdings möglich sein einen eigenen Browser zu implementieren und die javascript dateien und html etc direkt in delphi zu speichern. Endeffekt nicht mehr manipulierbar, .exe datei statt html javascript... oder?7
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 11.01.11 14:35 
user profile iconJungerIslaender hat folgendes geschrieben Zum zitierten Posting springen:
Es müsste doch allerdings möglich sein einen eigenen Browser zu implementieren
Wieviele Jahre hast du Zeit? ;-)
Du könntest vielleicht mit der Webkit-Engine oder so etwas basteln, aber dir muss klar sein, dass das ein riesiger Aufwand ist.

user profile iconJungerIslaender hat folgendes geschrieben Zum zitierten Posting springen:
Ich hatte bereits die idee den quelltex in textform in der exe zu speichern und dann zur Laufzeit zu kreiren und danach wieder zu löschen. Allerdings wären die java dateien zur laufzwit dann noch manipulierbar.
Das wäre bei meiner Variante ja nicht so. Allerdings kann man über die Exe im laufenden Zustand ohnehin immer manipulativ eingreifen, wie du es auch machst. Genauso vorher, wenn man sich angeschaut hast, wie der Quelltext versteckt ist.

Letztlich stellt sich mir die Frage nach dem Sinn. Schließlich wurde bewusst eine Sprache gewählt, die explizit immer bearbeitbar ist. Zudem ist damit auch die Kommunikation ziemlich sicher HTTP. Das heißt, wenn es darum geht diese zu schützen, dann bringt das Herumdoktern mit einer Exe oder so rein gar nichts, weil man einfach die Anfragen selbst stellen oder ändern kann.
Da ist dann die Frage vor wem das eigentlich geschützt werden soll (Benutzer, die es herunterladen, Mitarbeiter einer Firma, ...). Und was genau geschützt werden soll (die Kommunikation, nur die lokale Funktionalität, ...).
JungerIslaender Threadstarter
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 427
Erhaltene Danke: 5

Win XP
Delphi 7; Delphi 2005
BeitragVerfasst: Mi 12.01.11 00:05 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
So, jetzt bleiben noch zwei Sachen zu tun. Erstens musst du den Quelltext der HTML-Seite aus deiner Exe laden und ggf. entschlüsseln und in TWebBrowser laden. Zweitens musst du den Zugriff auf andere Dateiressourcen abfangen und ggf. ebenfalls umleiten bzw. die Daten dazu zur Verfügung stellen. Letzteres habe ich bisher noch nicht gemacht.


Wie mache ich das denn, das wäre ja schon mal ein Versuch wert.

Moderiert von user profile iconMartok: Quote repariert
Quake User
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: Mi 12.01.11 01:35 
1.) Welche Funktion hat denn das JavaScript Programm? JavaScript ist Clientseitig und alles läuft in einer Sandbox. Welche aufwändigen Funktionen kann so ein Prorgamm haben, die man nicht kurzfristig in einem Delphi-Programm schreiben könnte. Ich kann mir das nicht vorstellen.

2.) Wie die anderen schon angedeutete haben, wirst Du HTML und Javascript nicht schützen können. Dafür ist HTML nicht konzipiert. Damit ist alles gesagt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 12.01.11 02:03 
user profile iconJungerIslaender hat folgendes geschrieben Zum zitierten Posting springen:
Wie mache ich das denn, das wäre ja schon mal ein Versuch wert.
Schau dir TResourceStream an z.B., wie du es verschlüsselst kannst du dir ja überlegen.

Aber eine wichtige Frage ist eben wirklich vor wem das denn geschützt werden soll.
JungerIslaender Threadstarter
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 427
Erhaltene Danke: 5

Win XP
Delphi 7; Delphi 2005
BeitragVerfasst: Mi 12.01.11 02:27 
Es soll geschützt werde vor dem Endbenutzer, der so malware durch Fake Programme verbreiten könnte und halt wichtige und geheime Informationen aus dem Quelltext lesen kann.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 12.01.11 03:16 
Dann bringt dir HTML + JS nichts. Aber auch gar nichts.

Denn wenn du jetzt TWebBrowser oder irgendeine andere JS-Engine nimmst, lässt sich das zur Laufzeit verhältnismäßig einfach auslesen. Da braucht man keine besonderen Kenntnisse für.

Was du machen kannst, ist natürlich zusätzlich den JS-Code durch nen Obfuscator zu jagen, damit man ihn nicht so leicht versteht.

Letztlich kannst du damit das vermurkste Konzept aber auch nicht wirklich retten. :nixweiss:
JungerIslaender Threadstarter
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 427
Erhaltene Danke: 5

Win XP
Delphi 7; Delphi 2005
BeitragVerfasst: Mi 12.01.11 17:38 
Hm das heisst die einzig vernünftige Lösung wäre das ganze neu zu schreiben und das in einer vernünftigen Porgrammiersprache.Dabei wär für mich nur das Problem, ich hab das Programm nicht geschrieben und es hat mehr als 4500 Zeilen Code. Und 4500 zelen in eine andre Programmiersprache übersetzten, vorallem ich bin kein javascript pro, ist ganz schön happig.

Gut dann soweit schon mal Danke. Ich überdenk das ganze nochmal.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 12.01.11 17:53 
Hallo,

auch wenn es dir momentan anders vorkommt, aber 4500 Zeilen sind nicht wirklich viel. Aber ja, wenn der Quelltext geheim bleiben ist Java-Script als Sprache eine völlige Fehlentscheidung gewesen. Du solltest das aber als Chance sehen. Bevor du die JS Quelltexte 1 zu 1 übersetzt solltest du dich mit deinem Auftraggeber eventuell den Supportern und vielleicht auch ein zwei Nutzern unterhalten und mal nachfragen wo das Programm bisher seine schwächen hatte und wie es bei deiner Version besser gelöst werden kann. Wie die neue Oberfläche aussehen soll sollte auch gut überlegt werden, denn sie wird ja wahrscheinlich kein HTML mehr sein.

Wirklich übersetzen musst du dann nur noch eventuell vorhandene besonders Raffinierte Programmteile/Berechnungen, alles andere Programmierst unter Berücksichtigung der neuen Rahmenbedingungen neu. Je nachdem, wie das Ursprungsprogramm aufgebaut wurde ist das mal ein größerer, mal ein kleinerer Teil aber mit Sicherheit nicht das ganze Programm.

Gruß
Klabautermann