HWID / Code protection

progsfa

Mitglied
So, ich bins mal wieder ;)
Ich bin gerade dabei mir in Java ein kleines Programm zu schreiben ,welches ich dann verkaufen möchte.

Ich hatte mir gedacht, über HWID und Server-Requests, festzustellen, ob der Benutzer eine valide Lizenz hat.

Ich war gerade etwas am googlen, und merke, das es doch nicht so "leicht" wird :(

Deswegen hier meine Fragen:

1. Wie kann ich z.B. Computername/Username/CPUID des PCs auslesen?

2. Wie kann ich mich davor schützen, das der Kunde, meine Request-URL in seine Hosts-Datei einfügt und meine positive Antwort vom Server simuliert?

3. Weiterhin wäre, es dann ja problematisch, das man die JAVA files mit einige Decompilern relativ leicht decompilen kann.
Ich weiß, das man diese nicht komplett verschlüssel kann (wie z.B. in C(++)), weil die JVm den Code zur Laufzeit decompiliert und ausführt.
Gibt es trotzdem noch Möglichkeiten, das RE zu verhindern?

Weil auf C# will ich ungerne umsteigen, da Java ja Plattformunabhängig ist.
Bei C(was auch immer ;) ), müsste man schauen, ob die Biblotheken, welche man benutzt, auch auf anderen System vorhanden sind und denmach vers. Compilen.

Beste Grüße
progsfa
 
T

Tomate_Salat

Gast
1.
Java:
//Benutzername:
System.getProperty("user.name");
// oder
System.getenv("USERNAME");

// CPUID:
System.getenv("PROCESSOR_IDENTIFIER");

// Computername:
System.getenv("COMPUTERNAME");

2. Naja, die Hosts datei veruschen auszulesen (nicht sicher, ob das so einfach geht. Wahrscheinlich aber nicht :-/). Hier musst du die Antwort vom Server komplexer gestallten. Kein TRUE oder FALSE. Mit verschlüsselungen (z.B. RSA) kannst du einen String empfangen, der inhaltlich gleich ist, aber jedes mal trotzdem anders ausschaut.

3. Es gibt afaik VM's die mit verschlüßeltem Bytecode arbeiten können. wurde schon öfters genannt, ich vergesse es nur immer wieder. Eine VM kann man mit dem Programm zusammen ausliefern.
 

progsfa

Mitglied
1.
Danke

2.
Ich hatte schon vor, meine Ausgabe zu verschlüseln, man müsste nur schauen wie ;)
Vlt gibt man einfach noch die aktuelle Serverzeit aus und prüft, ob diese +- 10 sec darüber drunter liegt, weil ich denke, falls der verschlüsselungsalgorithmus (zu) komplex wird, dann wird es auch schwierig, diesen zu reversen.

3.
Das Problem bei "speziellen" VMs ist ja dann auch, das diese dann nicht jede Person hat...

Gruß
 
T

Tomate_Salat

Gast
2.) Theoretisch reicht eine verschlüsselung. RSA-Keys werden immer zufällig generiert, weswegen auch die übertragenen bytes unterschiedlich aussehen. Wie die Antwort in solchen Fällen ausschaut, wäre hier die Frage. Ich werde mir noch was überlegen.

Edit: Man könnte eine dauerhafte Internetverbindung voraus setzen. Wenn der Server eine Raubkopie vermutet, beendet er einfach die Verbindung zum Clienten.

Edit2: Wenn er eh einen Server abfragen soll: bau ein Login-System. Dann sind alle lizensierte Version bekannt und du könntest auch sicherstellen, dass nur eine Version gleichzeitig läuft.

3.) i.d.R. müssen VMs nicht mal installiert werden. Du könntest eine batch, command, haumichtot Datei dazupacken, die das Programm startet (relativ eben zur mitgelieferten VM).
 
Zuletzt bearbeitet von einem Moderator:

progsfa

Mitglied
RSA werd ich mir mal anschauen, wird aber nicht das einzige sein.
Man kann ja noch nen Base64 oder noch nen DES drumhauen.

2.1 : Hmm, ich will es über ein php-script mit meiner DB abgleichen, eine Dauerhafte Abfrage, ist noch so die super Lösung.

2.2 : Ok, loginsystem wär ok, aber dann muss man sich immer einloggen ;( eig soll nur beim ersten Start die HWID ermittelt werden und zusammen mit dem Aktivierungskey in meine DB. Der Key wird danach aus der DB gelöscht.

Danach wird beim starten einfach abefragt, ob die HWID in der DB ist.

3. OK.

4.
Bleibt immer noch das Problem mit dem decompilen.
wenn man bei google "JAVA code protection" eingibt, kommt man zu einigen Programmen, die das angeblich verhindern sollen.

Hat damit schon jemand Erfahrung?

Gruß
 
T

Tomate_Salat

Gast
2.1.) Ändert die Lage enorm, ich bin von einem Java-Server ausgegangen.

Puh, da weis ich nicht, wie gut du dort mit asynchroner Verschlüsselung arbeiten kannst.

Ansonsten. Mit solchen VM's/tools habe ich noch nie gearbeitet KA. Aber du kannst es ja mal einfach ausprobieren.
 

progsfa

Mitglied
Okay,
hätte ich schreiben müssen ;)

Ich dachte mir, das ich einfach den Algo in PHP nachschreibe (sollte kein größeres Prob sein, muss halt nur schauen, ob mein Server die last dann trägt...)

Okay, werde ich dann mal machen und wenn ich Zeit finde, ein Feedback schreiben.

Danke für deine Tipps :)

Gruß
 

kay73

Bekanntes Mitglied
// CPUID:
System.getenv("PROCESSOR_IDENTIFIER");

// Computername:
System.getenv("COMPUTERNAME");
[/code]
Sicher, dass das geht? ;-)

Kommerzielle Produkte in der Richtung setzen auf kleine DLLs/shared libraries in denen der Authorisierungscode sitzt. Wenn man portables C verwendet, kann man durchaus 32/64 bit Windows- und Linux-Systeme mit vertretbarem Aufwand abdecken.

Die eigentliche Schutzfunktion ist nicht das Problem, da man RSA/DSA u. s. w. geschenkt bekommt. Man kann auch z. B. auch leicht aus einer DLL heraus abfragen, ob eine oder mehrere Klassen im JAR-File richtig signiert sind.
 
Zuletzt bearbeitet:

progsfa

Mitglied
So, ich hab mich gerade mal ans Coden gemacht, jedoch sind mir die
Java:
// CPUID:
System.getenv("PROCESSOR_IDENTIFIER");

zu unspezifisch.

Das mit dem Processor_Identifier, gibt nur dessen namen zurück, und die PC / Usernamen kann man ja selber auch ändern.
Gibt es nicht noch weitere IDs, welche ich nutzen kann?
Finde bei Google nur

Java:
// CPUID:
System.getProperty();
aber da auch nur Java-bezogene, oder zu allgemeine Sachen :(

Gruß
 
G

Gastredner

Gast
Danach wird beim starten einfach abefragt, ob die HWID in der DB ist.
Und was, wenn der Benutzer nun einen neuen Prozessor gekauft hat? Muss er dann eine neue Lizenz kaufen?
Lizenzen an Hardware zu binden ist immer kritisch, da so bereits der Austausch einzelner Teile zum Verfall der Lizenz führen kann, was erst einmal vor allem für den Benutzer, über längere Sicht aber womöglich auch den Entwickler/Anbieter ärgerlich sein kann.
 

progsfa

Mitglied
Und was, wenn der Benutzer nun einen neuen Prozessor gekauft hat? Muss er dann eine neue Lizenz kaufen?
Lizenzen an Hardware zu binden ist immer kritisch, da so bereits der Austausch einzelner Teile zum Verfall der Lizenz führen kann, was erst einmal vor allem für den Benutzer, über längere Sicht aber womöglich auch den Entwickler/Anbieter ärgerlich sein kann.

Ich speichere die Lizensen dazu auch in meiner Datenbank.
Falls der Benutzer seine alte Lizense vorzeigen kann, dann wird die HWID geändert, bzw der Lizensecode wird wieder aktiviert.

Hast du einen anderen Vorschlag?
Möchte keinen fest eingebauten Algorithmus haben, da man sonst den Code weitergeben könnte.
Oder, man müsste irgendwie auf dem System des Benutzers ein "Hinweis" lassen, womit mein Programm beim starten dann feststellen kann, ob dieses schon aktiviert wurde. Hier ist das dann wieder kritisch, da der Benutzer einfach dieses Hinweis herausfinden muss, um das Programm öfters zu aktivieren.

Andere Vorschläge gerne gesehen :)

Gruß
 
T

Tomate_Salat

Gast
@kay73: da ich diese Keys nicht erfunden habe, sondern mir sie hab zurückgeben lassen: Ja. Der TO will plattformunabhängig bleiben. Das kannst du mit einer DLL nicht, außer du schreibst für jede Plattform eine eigene lib.

@TO: ich würde das login-system nutzen. Damit hat der Benutzer eine ID die er nicht mehr verfälschen kann und wundert sich auch nicht mehr, bei Änderung der Hardware, wieso das Programm nicht mehr funktioniert.
 

progsfa

Mitglied
@TO: ich würde das login-system nutzen. Damit hat der Benutzer eine ID die er nicht mehr verfälschen kann und wundert sich auch nicht mehr, bei Änderung der Hardware, wieso das Programm nicht mehr funktioniert.

Aber dann könnte dieser den Login weitergeben, und dann hätte ich Multi-Using einer Lizenz.
Das müsst ich dann auch irgendwie verhindern können...

Aber man kann ja dann z.B. nen Auto-Login einstellen, dann ist das noch etwas mehr benutzerfreundlich.

Gruß
 
T

Tomate_Salat

Gast
Nun ja, du könntest beim einloggen und nach jeder Serveraktivität die IP speichern und 5minuten lang sperren, sodass man sich von keiner anderen IP aus anmelden kann. Somit ist ein zeitgleicher login nicht mehr möglich und du hättest eine Single-user-Anwendung
 

- Java -

Mitglied
Wie wärs, wenn du denen, die eine Lizenz gekauft haben, einen Username + Passwort gibst, die sie im Programm eingeben. Dein Programm ruft dann ein PHP-Script auf, das den Username und Passwort checkt und die IP in der DB bei dem entsprechenden Usernamen speichert. Dann könntest du noch ein PHP-Script basteln, das gleiche IPs mit Usernamen auflistet. Dann kannst du sehen, ob jemand seinen Account weitergegeben hat und diesen dann sperren.
 
T

Tomate_Salat

Gast
du kannst nicht einfach so Accounts sperren!(!!!!). Wenn der Benutzer mobiles Internet verwendet oder vom Urlaub aus das Programm nutzen will... würdest du ihm irrtümlicherweise ein multiplizieren unterstellen.
 

ARadauer

Top Contributor
Oder was ist wenn mehrere Benutzer mit unterschiedlichen Lizenzen hinter dem selben Router sitzen und somit die gleiche ip haben?

hartes thema,...
 

Atze

Top Contributor
[ironie]mach es so wie andere große softwareschmieden auch. verteil deine software so gut wie kostenlos, bau eklatante fehler ein und verdien dein geld dann mit den supportverträgen! ;)[/ironie]
 
T

Tomate_Salat

Gast
Oder was ist wenn mehrere Benutzer mit unterschiedlichen Lizenzen hinter dem selben Router sitzen und somit die gleiche ip haben?

hartes thema,...

Hier bewährt sich mein System. Jeder Benutzer hat seinen eigenen Login und solange dieser angemeldet ist, wird der Benutzer für andere Arbeitsplätze gesperrt.
 

progsfa

Mitglied
So, ich hab jetzt nochmal darüber nachgedacht und bin zu den SChluss gekommen, das ich eine Kombination aus Login / HWID machen werde.
Der User kann sich mit seinem Login einloggen und dann wird seine HWID in der Datenbank gespeichert.

Hmmm, so richtig toll ist das dann auch nicht... :(
Ganz schön schwer so eine Entscheidung.

GRuß
 

schalentier

Gesperrter Benutzer
Mich wundert, warum hier noch keiner was zur Sache ansich gesagt hat. Dir sollte klar sein, dass jeder mittelmaessig begabte Entwickler, dir deinen Schutzmechanismus in maximal 1h ausgehebelt hat.

Ist es das wert, jetzt Tage oder Woche in die Entwicklung eines Kopierschutzes zu stecken, der dann verdammt schnell geknackt werden kann?

Mach doch einfach dein Programm besser, dann finden sich auch mehr Leute, die in dem Programm einen Mehrwert sehen und es kaufen.
 

Empire Phoenix

Top Contributor
Mich wundert, warum hier noch keiner was zur Sache ansich gesagt hat. Dir sollte klar sein, dass jeder mittelmaessig begabte Entwickler, dir deinen Schutzmechanismus in maximal 1h ausgehebelt hat.

Ist es das wert, jetzt Tage oder Woche in die Entwicklung eines Kopierschutzes zu stecken, der dann verdammt schnell geknackt werden kann?

Mach doch einfach dein Programm besser, dann finden sich auch mehr Leute, die in dem Programm einen Mehrwert sehen und es kaufen.


Zum Glück ist die normalle Kundschaft meistens eher mittelmäßige Anwender, für die kann sowas eine erhebliche sperre darstelen, solange es nicht in einschlägigen foren einen Einfachen Crack gibt. (Und das wird erst passieren wenn das intresse an dem Programm eine Schwelle übersteigt.)
 

kay73

Bekanntes Mitglied
@kay73: da ich diese Keys nicht erfunden habe, sondern mir sie hab zurückgeben lassen:
Interessant, sind mir noch nie untergekommen. Außerdem ist getenv deprecated.
Der TO will plattformunabhängig bleiben.
PROCESSOR_IDENTIFICATION existiert zumindest unter Ubuntu nicht.
...außer du schreibst für jede Plattform eine eigene lib.
Nicht schreiben, sondern nur neu übersetzen.

An Threadersteller: Wenn Du "reines" Java schreibst, musst Du Dir im Klaren sein, dass Du bezüglich Sicherheit schwere Kompromisse eingehst und verloren hast, sobald jemand fähig ist, Java Bytecode zu patchen. Da nützt auch eine Serververbindung nichts.

Aber das Schreiben eines "Keygens" lässt sich unterbinden. Ich habe mal eine ganz ähnliche Problemlösung in reinem Java implementiert und wenn ich es heute noch einmal an Deiner Stelle machen müsste, würde ich:

1.) Mir ein public/private keypair erstellen.
2.) Eine Signatur erstellen.
3.) Die Anwendung "ganz normal" schreiben und als JAR packen.
4.) Das JAR mit der Signatur aus 2. signieren.

5.) Beim Start der Anwendung würde ich die Signatur von ein paar (zufällig) ausgewählten Einträgen checken.
6.)Dann testen, ob eine Lizenzdatei im Pfad des JARs liegt. Diese Lizenzdatei besteht im Wesentlichen aus einem (XML-)String mit den (wie auch immer ermittelten) Kernbestandteilen wie CPUID, Festplattengröße, Username und einer digitalen Signatur aus dem privaten Schlüssel aus 1. Der String wird intern neu-ermittelt und dessen Hash gegen den signierten Hash aus aus dem Lizenzfile mit Hilfe des in die Anwendung hart eingebetteten public Key verifiziert.

All die Signier- und Verschlüsselungsgeschichten lassen sich unmittelbar mit Java-Boardmitteln realisieren.

Den Prüfcode für 5.) und 6.) würde ich in eine verschlüsselte Klassendatei mit ins JAR packen, die von einem eigens geschriebenen ClassLoader zur Laufzeit geladen wird, der z. B. nur anfängt zu arbeiten, wenn seine eigene Signatur stimmt.

Das macht das Dissassemblieren deutlich umständlicher. Wenn irgendwas nicht stimmt, könnte der ClassLoader z. B. die Hauptklasse der Anwendung gar nicht erst erzeugen.

Um den Prüfcode zu verschlüsseln, kann man z. B. einen simplen RC4 (Wikipedia) nehmen und die SBox direkt als Array in den Code packen. Das Ganze dann mit einem Obfuscator "behandeln" (Letzteres habe ich nicht probiert.)
 
Zuletzt bearbeitet:

Atze

Top Contributor
boar, scheint n krasses vorhaben zu werden :) steht das denn in relation zum sicherheitsgewinn? oder ist dann der security-code-anteil größer als das tool selbst? :D
 

schalentier

Gesperrter Benutzer
Den Prüfcode für 5.) und 6.) würde ich in eine verschlüsselte Klassendatei mit ins JAR packen, die von einem eigens geschriebenen ClassLoader zur Laufzeit geladen wird, der z. B. nur anfängt zu arbeiten, wenn seine eigene Signatur stimmt.

Bin mir grad nicht sicher ob ich das jetzt richtig verstanden hab (Krypto war noch nie meine Staerke...), aber sieht das dann nicht in Pseudocode so aus:

Java:
class Main {
   public static void main() {
      if( !SignatureChecker.isJARValid() ) {
         throw new IllegalVersionDetected();
      } else {
         Application.start();
      }
   }
}

Naja, und das einzige was zu tun waere, ist das ! zu entfernen. Das ist der Austausch eines Bytes in der Main.class.
 

kay73

Bekanntes Mitglied
...und wenn Du das Byte ausgetauscht hast, ist das JAR kaputt ;-)

Nein, der Witz ist der ClassLoader, der Teile des JARs entschlüsselt. Aber Du hast grundsätzlich schon recht: Das zu patchen ist dann Fleißarbeit. Interessant wird es, wenn sich die wesentlichen Teile nicht so einfach disassemblieren lassen.
 
Zuletzt bearbeitet:

schalentier

Gesperrter Benutzer
Okay, mein Pseudocode is Quatsch, vielmehr so:

Java:
class Main {
   public static void main() {
      Application app = CryptoClassloader.loadClass( "Application" );
      app.start();
   }
}

Wobei die Application.class halt verschluesselt ist. D.h. man muesste erst den Classloader verstehen (Schluessel zum Entschluesseln muss ja irgendwo im JAR rumliegen), sonst bekommt das Programm die Klasse ueberhaupt net. Wenn der Schluessel alternativ auch noch nur von nem Server geholt werden wuerden, dann wird das schon ordentlich schwierig zu knacken. Man darf nur keine Fehler machen :) Ich hab so einen aehnlichen Check schonmal gesehen, allerdings hat es da gereicht, die Signaturfiles aus dem JAR zu loeschen...
 

kay73

Bekanntes Mitglied
(Schluessel zum Entschluesseln muss ja irgendwo im JAR rumliegen)
Einfach in ein byte Array hartkodieren. Ich habe gleich die ganze SBox hartkodiert.

In meinem Fall hat dann der "Cryptoclassloader" erst den "eigentlichen" ClassLoader geladen. Und dann ist das Löschen der Signaturen natürlich fatal, weil der ClassLoader diese explizit prüft.

Wenn man wesentliche Teile des CryptoClassLoaders in portablem C schreibt, braucht es schon jemand mit richtig Ahnung. Wobei man aus C auch nur Java per JNI aufruft.
 
Zuletzt bearbeitet:

progsfa

Mitglied
@ schalentier:
Genau das möchte ich verhindern :)
Mir ist klar, das man ein Programm nie zu 100% schützen kann, solange es Leute gibt, die sich daran setzen, es zu Reversen.
Das das dann keine 0815 Benutzer sind, ist mir auch klar.
Aber schon Benutzer mit etwas mehr krimineller Energie suchen in einschlägigen Foren nach Cracks, Serials, etc...

@Empire Phoenix:
Das sollte auch verhindert werden.

@kay73:
Ok, du scheinst mein Anliegen verstanden zu haben :)
Jetzt bin ich auch noch kein so großer Java Guru, das ich jetzt genau damit etwas anfangen kann.
Der Pseudo Code der Nachposter ist mir klar, aber wie genau schreibt man/sollte so eine ClassLoader Anwendung aussehen?

Weil wenn man jetzt die ClassLoader Classe, welche die Prüfungen macht, auch nur leicht absichert, dann kann der REser, sich einfach diese anschauen, und von dort die hartcodeden Keys herausfinden.

Würde mich hier sehr über genauere/umfangreichere Anleitungen/Stoff zum Nachlesen freuen.
Ich möchte halt nicht nur c&p machen, sondern das dann auch verstehen, deswegen wie gesagt, würde ich mich über Links zu diesen Informationen freuen :)

Was ist eine SBox, so nebenbei.


@Atze
So, wie es aussieht wird es eher so aussehen 80-95 % Sec-code und 20-5 % eigentliche Programm, doch wenn ich den Aufwand einmal durchhabe und es so funktioniert, wie es soll, dann werde ich später keine Probleme mehr haben und kann dann auch größere Projekte sicher schreiben.


Ich werde erstmal 1 Woche nicht nachschauen können, würde mich aber sehr freuen, wenn ihr fleißig weiterdiskutiert.

Schönen Sonntag noch
progsfa
 

Atze

Top Contributor
@Atze
So, wie es aussieht wird es eher so aussehen 80-95 % Sec-code und 20-5 % eigentliche Programm, doch wenn ich den Aufwand einmal durchhabe und es so funktioniert, wie es soll, dann werde ich später keine Probleme mehr haben und kann dann auch größere Projekte sicher schreiben.

das stimmt, zu übungszwecken ist es sicherlich gut. nur die absicherung sollte in ner guten relation um aufwand stehen. 100%ige sicherheit gibt es wie du schon gesagt hast nicht. klar kann man unmengen an sicherheitsaufwand betreiben, aber für n tool was später nicht mehr als (angenommen) 1 Euro als download kosten soll ist der aufwand da 14 mann/tage zu verwenden dies für den "worts case" zu sichern zu groß. wenn der "cracker" das tool unbedingt braucht, wird er schon den euro zahlen bevor er sich überhaupt damit beschäftigt es knacken zu wollen.
 
T

tuxedo

Gast
eine ID die einen Computer identifiziert lässt sich mit etwas Arbeit auch selbst zusammenbasteln. Habs glaub ich schonmal in nem anderen Thread geschrieben. Geht halt nur nicht exakt Platformübergreifend. Hier das ganze nochmal in Kurzfassung:

Windows:
id = Windows Serial Key (via Kommandozeilenbefehl "reg query...")
id += Timestamp von C:\Windows
id += ...
id = sha1(id)

Linux:
id += diverse Daten aus /dev/ oder auch /proc
id = sha1(id)

MacOS X:
id = sha1(GeräteID) (bekommt man via Kommandozeilenbefehl --> google)

-------------

Nachteile:

Windows: Ändert man die Windows-Installation (Neuinstallation etc.), ändert sich die ID. Kommt drauf an an welche Merkmale man sich hängt.
Linux: Kommt drauf an an welche Merkmale man sich hängt ...
MacOSX: Bei einer Gerätereparatur mit einem Tauschgerät ist die ID wohl anders
 

progsfa

Mitglied
Okay, danke.
Man könnte ja vlt einfach ne Kontrolle durchführen, welches System gerade läuft.

Nochmal zu meiner Frage: Wie genau sieht so eine CryptoLoader Classe aus?
Kann mir gerade nichts darunter vorstellen...

GRuß
 

kay73

Bekanntes Mitglied
Wie genau sieht so eine CryptoLoader Classe aus?
Sorry, den Code publiziere ich nicht.

Das hier hat mir seiner Zeit sehr geholfen:
Java Class Loaders (Java Security)

Weitere Ideen gibt es hier:
Encrypting Your Java Application | DeciSci Knowledge/Community Site
Java: encrypt, decrypt...JAR..., obfuscator, obfuscation

Du könntest Dir überlegen, eine kommerzielle Lösung anzuschaffen:
componio GmbH - ByteCode-Verschlüsselung für Java-basierte Software mit der JarCryp™-Technologie
ClassGuard FAQ
 
Zuletzt bearbeitet:

Dit_

Bekanntes Mitglied
Ich habe mir auch gedanken gemacht wie schütze ich den Code am besten? Irgendwann wurde mein Projekt riesig (zumindest für meine Verhältnisse), dann dachte ich hey, ich laufe doch einfach abfuscator drüber und gut ists...
Falls jemand in der Lage ist ein System, dass aus über 500 Klassen besteht (heutiger Stand) und durch Weiterentwicklung/Updates ständig erweitert und veraendert werden soll, zu verstehen, dann hat derjenige es auch verdient von dem Code gebrauch zu machen :).

Ich meine, wenn ich schon implementierte, große Module 4 Wochen später anschaue, brauche ich sehr lange bis ich wieder den Durchblick habe, obwohl ich sehr gut kommentiere (60% der codezeilen sind kommentare) und der Code dank Patterns (+ UMLs) gut lesbar ist.
Kann sich jemand große Menge der Klassen nach Obfuscatorbehandlung vorstellen? Ohne packages, mit Variablennamen wie "_" oder "____" oder "_____" und in Hälfte der Klassen kommen die API Objekte sogut wie nicht vor (außer String, int natürlich). Man kann zwar die Klassen und Variablen unbenennen aber was dann? Mit nächstem "Release" könnte vieles anders sein und es könnte absichtlich vielles anders sein :)

Oder sehe ich das falsch? :oops:

Code verschlüsseln? Ich glaube der Aufwand lohn sich einfach nicht...
Wenn es wirklich um know-how handelt, dann -> C/C+ oder Assembler :D
 

Atze

Top Contributor
außerdem kommt es ja auf die art von software an. wenn es bspw "nur" ein simpler thin-client ist der sowieso nur bekannte, öffentliche schnittstellen anspricht, wobei der große teil auf dem server abgearbeitet wird und die firmenbezogenen daten und rechnungen dort gemacht werden, gibt es ja auch nicht mehr viel abzusichern. jedenfalls im günstigsten falle
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Tipps für Organisation von Code-Reviews nach einem Pull Request. Allgemeine Java-Themen 5
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
schemil053 Methoden Code-Verbesserung Allgemeine Java-Themen 2
D Webarchive (war): Code verschleiern Allgemeine Java-Themen 7
D Compiler-Fehler child process exited with code 1 Allgemeine Java-Themen 1
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
OnDemand Releaseversion Tag in Code Allgemeine Java-Themen 5
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
F Code auslagern Allgemeine Java-Themen 5
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
A code wird nicht ausgeführt Allgemeine Java-Themen 3
B Bitte um Code Erklärung Allgemeine Java-Themen 5
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
OnDemand Clean Code oder Allgemeine Java-Themen 5
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
H Precompilierten code ansehen Allgemeine Java-Themen 3
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
S Code Erklärung Allgemeine Java-Themen 21
B Pausem im Code Allgemeine Java-Themen 2
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
F Code in Klassen bringen Allgemeine Java-Themen 4
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
F Klassen Spaghetti Code Vermeidung Allgemeine Java-Themen 16
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
J Code Page characters darstellen Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
I Python Code in Java Code Allgemeine Java-Themen 9
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
O Standard library nativer C code Allgemeine Java-Themen 1
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen ​ Allgemeine Java-Themen 3
N Morse Code decoder Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
S Eclipse exit code 805306369 Allgemeine Java-Themen 1
Pataraca Vererbung Code einbinden Allgemeine Java-Themen 3
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
G Eclipse Eclipse: Unreachable code Allgemeine Java-Themen 16
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
C Code vereinfachen Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
Prafy Best Practice Code Refaktorisierung Allgemeine Java-Themen 7
WetWer Was bedeutet/macht ein Exit-Code Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
perlenfischer1984 HTML Code decodieren Allgemeine Java-Themen 2
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
J LWJGL 3 Error Code 1282 Allgemeine Java-Themen 4
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Frage zu meinem Code Allgemeine Java-Themen 2
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
Fischkralle Ausführen von fremden Code Allgemeine Java-Themen 14
wolfgang63 Code snipped Software Allgemeine Java-Themen 1
L Eclipse Editieren des Code templates für Override methods Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
Thallius Wie verstecke ich meinen private Key am besten im Code? Allgemeine Java-Themen 10
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
N HTTP response code: 403 Allgemeine Java-Themen 3
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
D Java Compiler code referencen Allgemeine Java-Themen 0
G Fehler im Java-Code Allgemeine Java-Themen 4
A PHP-Code zu Java-Code Allgemeine Java-Themen 5
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
X Was macht folgender Code!? Allgemeine Java-Themen 6
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
Fab1 Best Practice Vorgehensweise bestehenden Code/Programm verschönern Allgemeine Java-Themen 4
M Code optimieren Allgemeine Java-Themen 7
A jEditorPane Html Datei öffnen (code) Allgemeine Java-Themen 3
S EAN-Code Tabelle für CD's Allgemeine Java-Themen 2
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
J Erzeugung von Java-Code Allgemeine Java-Themen 2
A Source code analyze Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben