Naja, es gibt Konverter die Java-Code bspw. in C/C++/C# übersetzen. Kann dir aber nicht sagen wie die Qualität der Ergebnisse ist bzw. ob es sich überhaupt problemlos konvertieren lässt und läuffähig ist.
keinen der Millionen Euro wert ist
Aber einen der nicht-manipulierbar sein muss. Die Funktionsweise darf in keinem Fall nachvollziehbar sein. Was ja bei Decompilierung sehr sehr einfach ist.
@x.l: also kommts auf einen Versuch an?
Werd mich mal umschauen
Hat vielleicht schon jemand Erfahrung mit solchen Programmen?
Völlig egal. Was auf dem eigenen Rechner läuft kann grundsätzlich immer zurück entwickelt/geknackt/manipuliert werden.
Die Lösung wäre eine Client-Server-Anwendung.
Also müsst ich den Code der nicht geknackt werden dürfte um wirkich sicher zu gehen immer auf einen eigenen Server auslagern?
hmm... bei Teilen ginge das vielleicht, aber bei anderen muss das aufm jeweiligen Client ablaufen. Das Prog muss auch auf Rechnern laufen, die nicht am Internet hängen.
Kann man Code eigentlich verschlüsseln und erst zur Laufzeit wieder entschlüsseln sobald er gebraucht wird?
Dann könnte man den Schlüssel ganz tief im Code vergraben und verwirren.
Könnt ich nicht theoretisch den entsprechenden Code zur Laufzeit immer wieder morphen um das Ausfindigmachen der Stellen die den Code knacken würden zu erschweren?
Kann man Code eigentlich verschlüsseln und erst zur Laufzeit wieder entschlüsseln sobald er gebraucht wird?
Dann könnte man den Schlüssel ganz tief im Code vergraben und verwirren.
Kommt drauf an, was du mit verschlüsseln meinst, aber mit unnötigen Aufrufen, aufgeblähten algorithmen, codierten Variablen und obsfucatoren lässt sich schon einiges machen .
Aber auch hier gilt: Wenn jemand deinen Code UNBEDINGT sehen möchte und das nötige Know-How/die nötigen Mittel dazu hat, dann schafft er das auch.
du willst du Code irgendwie verschlüsseln (wahrscheinlich zum Schutz) und zur Laufzeit entschüsselt an die JVM geben (Zeitpunkt x),
aber dann reicht es doch für den Angreifer, einfach zum Zeitpunkt x den bereits entschlüsselten Code anzuschauen
unter der Voraussetzung, dass das alles möglich ist, keine Ahnung
Wie bereits erwähnt, ist der einzige Weg, den Code zu schützen der, es auf einem eigenen Server laufen zu lassen.
Falls das nicht funktioniert, dass muss zumindest der schützenswerte Teil des Programms auf dem Server laufen und der andere Teil als Clientanwendung. Also eine Client-Server Anwendung.
Wenn du uns noch sagst, warum ein Teil auf dem Client laufen muss, dann können wir dir vielleicht weiterhelfen. Also was wird vom Client benötigt? Irgendwelche Hardwareressourcen?
Nein, der Hauptgrund dafür, dass es aufm Client laufen muss ist der, dass das Programm auch auf Rechnern laufen sollte die über keine Internetverbindung verfügen.
Aber wenn die einzig sichere Möglichkeit eine Client-Server Applikation ist, muss ich hier wohl doch Abstriche machen.
Sicherheit geht in jedem Fall vor.
es gibt noch eine andere Möglichkeit: eine verschlossene Hardware-Box (ganz klein: Chipkarte),
alle Öffnungsmöglichkeiten sind per Draht mit einer Handgranate verbunden (Achtung: geht nicht in Chipkarte)
es gibt noch eine andere Möglichkeit: eine verschlossene Hardware-Box (ganz klein: Chipkarte),
alle Öffnungsmöglichkeiten sind per Draht mit einer Handgranate verbunden (Achtung: geht nicht in Chipkarte)
Wär es denkbar, eine eigene kleine Virtuelle Maschine zu implementieren, ähnlich VMware aber viel kleiner, diese dann mittels AES zu verschlüsseln und meinen Code ausschließlich in dieser VM ausführen zu lassen?
Dann hätt ich meinen kleinen Server im jeweiligen Rechner platziert und um dort noch an den Code ranzukommen, müsste man erstmal 256 bit AES Schlüssel knacken.
Hab ich erst auch gedacht, und den Gedanken wieder verworfen.
Aber ich denke an eine autonome VM, die man nicht entschlüsseln muss oder bei der man keinen Schlüssel braucht um reinzukommen oder sowas. Denn reinkommen braucht man nicht, sondern ihr nur Daten übergeben und welche annehmen. Eine die man nur startet, die dann bootet (in der verschlüsselten VM) und die nur 2 Schnittstellen (Ein und Ausgabe) zum Wirtsystem hat.
Vergleichsweise wie ein Rechner oder eine VMware - VM, die mit zB. Truecrypt komplett verschlüsselt ist, die man nur startet.
Würde sagen man kann das ganz kurz und knapp machen: So lange du ein Programm lokal ausführst kann und wird es immer geknackt werden, sofern jemand genug Interesse und finanzielle Mittel hat, dies zu tun.
Grund: Dein Programm läuft auf einer unsicheren Plattform, nämlich einem Betriebssystem, und das ist nunmal Software. Du müsstest dein Programm in Hardware gießen um einen höheren Schutz zu haben.
Wie lange programmierst du schon mit Java bzw. objektorientiert?
Wenn noch nicht so lange, dann ist die Chance groß dass man deinen Code sowieso nicht nachvollziehen kann. :lol:
Wenn Client-Server nicht geht, ist die Hardwarelösung am sichersten. Am besten das Programm als ASIC realisieren und das Gehäuse mit Epoxyd-Harz ausgießen. )
Wenn Client-Server nicht geht, ist die Hardwarelösung am sichersten. Am besten das Programm als ASIC realisieren und das Gehäuse mit Epoxyd-Harz ausgießen. )
Das Problem an dieser Sache ist die Finanzierung. Ohne Investoren wird das wohl nicht so einfach zu realisieren sein. Mal abgesehen von den Kosten für den Endnutzer.
Da hatten wir doch mal so ein Programm, wo man immer ein Hardware Teil an den ComPort anschliessen musste, dass das Programm startet. Naja..hat die Umstellung auf die neuen Laptops nicht überlebt.
*SPAM*
Jaja der gute alte Com-Port Dongle, welchen es aber mittlerweile auch in USB Ausführungen gibt und somit wieder mit neuen Laptops funktionieren dürfte!