Forum: Mikrocontroller und Digitale Elektronik Teil eines C-Sourcecode schützen


von Siegfried S. (dieleena)


Lesenswert?

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

von TestX .. (xaos)


Lesenswert?

nicht wirklich...kannst höchstens den teil compilieren und als asm file 
dazulinken...nur wer sich auskennt..nunja

von H.Joachim S. (crazyhorse)


Lesenswert?

als lib compilieren.

von Michael L. (Firma: Ingenieurbüro Lehr) (ml-net)


Lesenswert?

library erzeugen

von Oliver (Gast)


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

von Ralf (Gast)


Lesenswert?

Nur wenn du eine Lib draus machst. Und selbst die kann mit 
entsprechendem Aufwand eingesehen werden - je nach Plattform fällt der 
Aufwand unterschiedlich groß aus (PC, AVR, 805x, ARM).

Ralf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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"  ;-)

von Oliver (Gast)


Lesenswert?

Wenn es unbedingt als Source-Code weitergegeben muß, gibt es noch sowas 
hier:

http://www.stunnix.com/prod/cxxo/overview.shtml

Oliver

von Bertram S. (bschall)


Lesenswert?

Lothar Miller schrieb:
> um 10 Jahre zurückgeworfen wird...
> Ein erster Ansatz wäre sowas wie im
> Beitrag "Re: Lookup table für Sinus funktioniert nicht"  ;-)

Ich kann nicht mehr... zu geil diese Aussage!

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Peter D. (peda)


Lesenswert?

Das große Problem bei Lib-Funktionen ist, daß alle 
Hardwareabhängigkeiten danach in Stein gemeißelt sind.
Z.B. CPU-Takt, Timer, Portpins, ADC-Inputs, PWM-Outputs, UARTs, ...


Peter

von Nick M. (Gast)


Lesenswert?

Hier: http://www.ioccc.org/
gibt es durchaus brauchbare Ansätze! ;-)


Gruß,
Nick

von Joe (Gast)


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.

von Karl H. (kbuchegg)


Lesenswert?

Ich seh das so:

Wer so eine Frage stellen muss, besitzt gar keinen Source Code der 
schützenswert wäre.
Wer Source Code hat, der tatsächlich schützenswert ist, hat genug 
Erfahrung in C, so dass er diese Frage gar nicht stellen muss.

von Peter D. (peda)


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

von Alter Sack (Gast)


Lesenswert?

Ich seh das so:

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

MfG
Stephan

von zaphod_beebelbrox (Gast)


Lesenswert?

Hier gibt's ein paar Grundlagen, um den QUELLCODE unkenntlich(er) zu 
machen: http://en.wikipedia.org/wiki/Obfuscated_code

Viele Grüße,
Matthias

von Daniel H. (Firma: keine) (commander)


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.

von MeinerEiner (Gast)


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)

von Bernd (Gast)


Lesenswert?

Schau dir Peters Code an... er kanns :-)

von Sepp (Gast)


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..

von Siegfried S. (dieleena)


Lesenswert?

Hallo,
das sind ja viele Antworten.
Werde mal überlegen, wie ich es löse.
Danke
Gruß Siegfried

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.