• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C#] Code schützen oder Maschinencode

Status
Für weitere Antworten geschlossen.

Dj Boris

Mitglied
Hallo
Ich hab folgendes problem:
Ich hab ein programm in C# geschrieben und will den code irgendwie schützen am besten wäre ein Maschinencode.
Soweit ich weis kann man C# programme reassemblern und das will ich nicht.

Gibt es da eine Möglichkeit?
Ist sie zuverlassig?
Bleibt das programm (.net 3.5) noch im vollen funktionsumfang?
Danke schon im vorraus


DJ-Boris
 
Werbung:
Ich sollte dich noch darauf hinweisen, dass ein bereits kompliertes Programm, schon in Maschencode kompiliert ist und das daraus garantiert nicht mehr der Code wird den du hast, es heißt dissamblieren und darus kommt Assembler Code. Man kann mit diesen Code auch keine C/c++ oder sonstige Quelldateien mehr machen, also dürfte sich dein Problem in Lft aufgelöst haben.
 
Ich sollte dich noch darauf hinweisen, dass ein bereits kompliertes Programm, schon in Maschencode kompiliert ist und das daraus garantiert nicht mehr der Code wird den du hast, es heißt dissamblieren und darus kommt Assembler Code. Man kann mit diesen Code auch keine C/c++ oder sonstige Quelldateien mehr machen, also dürfte sich dein Problem in Lft aufgelöst haben.
Möglich ist das schon. Nur gibt es keine effektiven Decompiler (zumindest kenne ich keine). Es gibt nach dem Decompilieren keine Kommentare mehr und die Bezeichner sind auch nicht mehr unbedingt die Gleichen.

Es gibt höchstens Programme, die es den Decompilern erschweren das Programm wieder in seine Ursprungsform zu bekommen. Ganz verhindern kann man es nicht.

Alles in allem hat gollumn mit seinem Fazit recht: Sorgen machen musst du dir keine. Wenn dein Programm ein bisschen komplexer ist wird es hinterher kaum mehr lesbar sein.

N43
 
Werbung:
Also den Programm Code kann man per Reverse Engineering heruasfinden, allerdings wie nummer43 schon sagte keine variablen namen/funktion und und und da sein, das Resultat ist einfacher Assembler Code. Gibt zwar Programme die können teils C Ähnliches Code rausspucken aber, niemand wird daran interessiert sein einfach mal von einem unbekannten User(nichts gegen dich ;)) das Programm zu decompen.

Achja Nummer43:

gollumn != gollum1990

Iwie schreiben alle meinen Namen falsch, so ein Mist.
 
Es gibt sogar sehr gute Programme die einem Maschinencode in verschiedene Sprachen übersetzen, diese kosten zwar viel Geld aber ran kommt man trotzdem.

Verhindern kann man dies aber mit gängigen Cryptern. Als beispiel sei "The Mida" genannt welches durch die Untergrund Szene aber schon so in Verruf geraten ist das damit gecryptete Programme von gängigen Anti Viren Programmen erkannt und gemeldet werden und sich die meisten User dadurch abschrecken lassen.

Hoffentlich konnte ich helfen.

MFG Miah :)
 
Werbung:
Unter Unix gibt es den Befehl "strip", der die Symoltabellen aus einem Executable entfernt. Vorteil: Programmdatei wird deutlich kürzer. Nachteil: Einsatz eines Debuggers ist dann nicht mehr möglich.

Wenn es sowas unter Windows gibt, sollte das einen gewissen Schutz bieten.
 
Hallo
Jetzt hab ich wieder was dazugelernt!
Ich werde den Quelltext wohl nicht vercrypen weil wenn man es nicht so leicht knacken kann lohnt es sich einfach nicht.

Jetzt ist mein problem gelöst. Danke

DJ-Boris
 
Hinzuzufügen wäre das man per ReverseEngineering gut alle Funktionen aus einem Programm kriegen kann, die lauten dann halt a, b, c, ..., zN oder so ;) Und es ist furchtbarer Code, jedoch man kann die Logik teilweise erkennen. Zudem übersetzt C# nicht alles in Maschinencode sondern in eine Zwischensprache, die CIL (Common Immediate Language), .NET – Wikipedia da steht alles.
 
Werbung:
Zudem übersetzt C# nicht alles in Maschinencode sondern in eine Zwischensprache, die CIL (Common Immediate Language), .NET – Wikipedia da steht alles.
Das ist trotzdem ein Maschinencode, aber eben nicht von der Maschine, auf der das Programm laufen soll, sondern von der virtuellen Maschine.

Hinzuzufügen wäre das man per ReverseEngineering gut alle Funktionen aus einem Programm kriegen kann
alle Funktionen bekommt man auch nicht, denn manche werden vom Compiler durch inline-Code (die gesamte Funktion wird dort eingefügt, wo der Aufruf statt fand) ersetzt.

Abgesehen davon hat keiner was davon, denn der Code muss so oder so neu geschrieben werden. Damit sich Reverse Engineering lohnt (was übrigens nicht nur über COde-Analyse läuft) muss das Programm schon einen verdammt guten Algorithmus verwendet haben, den sonst keiner kennt oder andere unbekannte Informationen enthalten.

Die (praktische) Funktion bekommt man ansonsten auch durch Testen raus und schreibt dafür dann einfach einen Klon.


N43
 
ich finde deine entscheidung nicht zu crypen richtig, denn:

die frage ist, ob du wirklich einen derartig glänzenden codeschnipsel gezaubert hast, dass sich der ganze aufwand auch auszahlt. ich persönlich würde sogar den source-code mitgeben. was spricht dagegen, dass leute, die den code lesen können ihn eventuell verbessern und dir das ergebnis wieder zukommen lassen. die die den code lesen könnten kommen auch drann, wenn sie das wirklich wollen.

den besten schutz hast du schon mit c# gemacht, 99,9 % der anwender ineteressieren sich nicht die bohne für code, sondern nur dafür, ob er funktioniert.

und letztlich, einen gewissen schutz hast du als urheber schon. der code gehört dir, da gibt es nix zu rütteln. plagiate werden aus dem source-code heraus wesentlich einfacher erkannt als aus maschinencode.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben