Teil eines C-Sourcecode schützen

Gast #1513009
Lesenswert?

Du kannst den Codetext verschlüsseln, aber das wäre völlig sinnlos. 
Entweder man braucht den Sourcecode im Klartext, oder man braucht ihn 
gar nicht.

Wenn möglich, bau aus den Teilen eine lib, und liefer die aus. Das 
Wissen, was da drin steht, lässt sich zwar durch Re-Engineering 
herausfinden, aber das ist zumindest mit Aufwand verbunden.

Oliver
Moderator (Firma: Titel) Persönliche Seite #1513029
Lesenswert?

> einen Teil des C-Sourcecode, bei weitergabe zu schützen,
> sodas dieser Teil von einem drittem nicht eingesehen werden kann?
Schreib ihn so verwirrend, dass die Konkurrenz beim Reverse-Engineering 
um 10 Jahre zurückgeworfen wird...
Ein erster Ansatz wäre sowas wie im 
Beitrag "Re: Lookup table für Sinus funktioniert nicht"  ;-)
Persönliche Seite #1513149
Lesenswert?

Das Konzept der "Source Code Obfuscation" ist durchaus existent, aber 
nur bei größeren Projekten sinnvoll.

So wird beispielsweise Flexe-Lint von der Firma Gimpel im Quelltext 
ausgeliefert (das ist die nicht-PC-Variante von PC-Lint).

    FlexeLint is distributed as shrouded C source code, to
    make the capabilities of PC-lint available wherever there
    is a C compiler to compile it.

So steht's auf http://gimpel.com/

Je kleiner aber ein Projekt ist, desto lohnender ist der Versuch, den 
"verschleierten" Sourcecode zu rekonstruieren.
Moderator Persönliche Seite #1513157
Lesenswert?

Siegfried Saueressig schrieb:

> besteht eine möglichkeit, einen Teil des C-Sourcecode, bei weitergabe zu
> schützen, sodas dieser Teil von einem drittem nicht eingesehen werden
> kann?

Das ist ungefähr so, wie das Auslesen einer CD zum Zwecke des
Abspielens zu gestatten, aber das Auslesen einer CD zum Zwecke
des Kopierens verhindern zu wollen...

Du kannst das Problem eigentlich nur durch entsprechende Nutzungs-
bestimmungen lösen.  Wenn jemand deinen verschleierten C-Code
rekonstruiert, dann hast du gegen ihn letztlich gar keine Handhabe
mehr, da er ihn ja am Ende neu schreiben muss (mit seinen eigenen
Worten) und damit ein neues Werk zwangsweise schafft, für das er
selbst völlig legal der Inhaber des Copyright wird.  Für deinen
originale Code jedoch hälst du das Copyright und kannst festlegen,
wer damit was unter welchen Bedingungen darf.
Gast #1513175
Lesenswert?

Atmel hat mit dem UC3L das sog. FlashVault eingeführt, wo man seine 
Library in einen bestimmten Bereich flashen kann, diesen dann aber vor 
dem Auslesen schützen kann. Wird eine FUnktion aus diesem Bereich 
aufgerufen, sieht es beim Debuggen so aus als wäre es eine laaange jmp 
und return Instruction.
Vielleicht ist das ein Ansatz, seine SW bereits geflasht mit einem uC 
weiterzugeben...

FlashVault code protection
The AT32UC3L includes a brand new flash security technology named 
FlashVault. FlashVault allows the on-chip flash to be partially 
programmed and locked, creating secure on-chip storage for secret code, 
keys and software intellectual property. Code stored in the FlashVault 
will execute as normal, but cannot be read, copied or debugged. This 
allows a device with FlashVault code protection to carry a piece of 
valuable software such as a math library or an encryption algorithm from 
a trusted location to a potentially untrustworthy partner where the rest 
of the source code can be developed, debugged and programmed.
#1513347
Lesenswert?

Karl heinz Buchegger schrieb:
> Wer Source Code hat, der tatsächlich schützenswert ist, hat genug
> Erfahrung in C, so dass er diese Frage gar nicht stellen muss.

Vielleicht will er ja den Code schützen, damit andere die Fehler darin 
nicht sehen können.


Peter
(Firma: keine) #1513565
Lesenswert?

Peter Dannegger schrieb:
> Karl heinz Buchegger schrieb:
>> Wer Source Code hat, der tatsächlich schützenswert ist, hat genug
>> Erfahrung in C, so dass er diese Frage gar nicht stellen muss.
>
> Vielleicht will er ja den Code schützen, damit andere die Fehler darin
> nicht sehen können.
>
>
> Peter

Security by Obscurity, sehr gefährlich. Wenn Fehler vorhanden sind 
sollten sie auch ausgemerzt werden können.

Ansonsten sehe ich es so:

1. Es gibt die Möglichkeit, "obfuscated code" zu erzeugen, der schwer zu 
verstehen ist. Hier sehe ich allerdings das Problem, dass man zum einen 
Zeit investieren muss, wenn man seinen normalen Code in obfuscated code 
umschreiben möchte. Und von Anfang an obfuscated code zu entwickeln 
halte ich doch für etwas gewagt. Ausserdem lässt sich das 
Originalprogramm durch Beobachtung des Codes (Stichwort Debugger) usw. 
auch wieder rekonstruieren.

2. Library erzeugen mag Personen abhalten, die wenig Ahnung haben, 
Profis könnten versuchen den Code zu disassemblieren wodurch am Ende 
auch der (bzw. ein ähnlicher) Code erzeugt werden kann.

Insgesamt bin ich der Meinung, dass man abwägen muss, was man möchte. 
Soll niemand die Möglichkeit haben den Code zu sehen? Dann darf man ihn 
auch nicht veröffentlichen, weder im Original, noch obfuscated noch als 
library oder anderweitig kompiliert. Sollen nur Laien nicht darauf 
zugreifen können? Obfuscating oder Library. Ausser durch Verschlüsselung 
ist mir kein Weg bekannt, wie man auch Profis davon abhalten könnte, 
Reverse Engineering durchzuführen. Aber selbst das ist hier nicht 
möglich, da der Code zum entschlüsseln irgendwo unverschlüsselt 
hinterlegt sein muss.
Gast #1513586
Lesenswert?

> Wenn die Moderatoren, sogar die arroganten und überflüssigen Kommentare
> übernehmen, braucht's auch keine Forenmitglieder.

Da muss ich sogar zustimmen.
Wieso sollte man die Erfahrung im Schutz von Code haben, wenn man 
gleichzeitig Erfahrung im C-Programmieren hat?
Könnte es nicht evtl. sein, dass sich jemand anders darum kümmert, was 
mit dem Code passiert? Wie es z.B. in etlichen Firmen der Fall ist?
A erstellt den Code nur und gibt ihn an B weiter.
B kümmert sich darum, was mit dem Code passiert und wie er zu schützen 
ist.
Da braucht a exakt 0% Wissen über Codeschutz (bzw. nur so viel, dass er 
ihn selbst nicht weitergibt)
Gast #1513626
Lesenswert?

Wenn es um veröffentlichen im Netz oder ähnlichen geht, lass einfach den 
entsprechenden Code weg.
Obfuscated code und library bringt nix. Wenn dir der Schutz in Form 
eines Copyrights / Lizenz nicht ausreicht, sollest du überlegen ob du 
den Code überhaupt weitergeben solltest..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren