DMUG-Archiv 2005

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Eigenen Code weitergeben

Hallo,


ja aber dann hast Du

a) das Problem, für jede Maschine ein eigenes *.mx 
File zu erzeugen, denn
   DumpSave[] ist rechnerabhängig
b) Kannst Du keinen Code mehr ausführen, also 
nicht mehr Off[SetDelayed] machen oder
   If[MyPackageDecode[$PackageLicenseNumber]===$LicenseNumber,...], 
es seiden
   Du erzeugst einer eigene Freischalt-Funktion
c) die *.mx Files sind zwar binär (iiiiieeee ...) 
aber überhaupt nicht geschützt,
   es sollte also wesentlich einfacher sein da die 
Locked-Bytes zu finden und einfach
   rauszuwerfen. So etwas würde ich aber nicht in 
eine news-group posten, weil
   das reverse-engineering von Mathematica-Code 
wäre, und das erlaubt meine
   Mathematica Lizenz nicht (!) und überhaupt (!!) 
würde ich das nie tun !!!
   Sowas zu posten wäre vermutlich noch viel viel 
illegaler,
   als es selber zu machen.

Gruß
  Jens


----- Original Message ----- 
From: "Rolf Mertig" <rolf@XXXXXXX.com>
To: "Jens-Peer Kuska" 
<kuska@XXXXXXX.de>
Cc: <llsaiyajin@XXXXXXX.de>; <demug@XXXXXXX.ch>
Sent: Friday, September 16, 2005 2:32 PM
Subject: Re: Eigenen Code weitergeben


| OK.
| Wenn man aber die myfun - Definition in ein .mx 
Package speichert dann
| nützt auch On[SetDelayed]  nichts, weil ja schon 
die DownValues im .mx sind.
|
| Rolf
|
| Jens-Peer Kuska wrote:
|
| >Hallo,
| >
| >guckt doch mal, was passiert mit
| >
| 
 >-------------------------------------------------------------------
| >BeginPackage["TopSecret`"]
| >
| >myfun::usage="myfun[x] will do something very 
very
| >sectret."
| >
| >Begin["`Private`"]
| >
| >myfun[x_]:=Sin[x]
| >
| >End[]
| >EndPackage[]
| >
| 
 >Attributes[myfun]={ReadProtected,Protected,Locked}
| 
 >--------------------------------------------------------------------
| >Mit Encode[] gibt das die Datei im Anhang.
| >
| >So, jetzt ist myfun[] sicher vor den Augen der
| >Welt -- ist ja mit Locked geschützt.
| >
| >Dann startet man einen neuen Kernel, sagt
| >
| >On[SetDelayed]
| >Get["TopSecret`"]
| >
| >und was lächelt uns an ?
| >
| >SetDelayed::trace: myfun[x_]:=Sin[x] --> Null
| >
| >wer hätte das gedacht. Nicht mal der volle 
Context
| >macht den
| >Code unleserlich. Ansonsten *muß* das immer
| >gehen, weil
| >man die Funktion erst mit Locked versehen kann,
| >wenn sie definiert
| >ist.
| >
| >Natürlich kann man vor BeginPackage[] alle
| >Debugging-Funktionen
| >ausschalten :-), um das zu verhindern.
| >
| >Gruß
| >  Jens
| >
| >----- Original Message ----- 
| >From: "Rolf Mertig" <rolf@XXXXXXX.com>
| >To: "Jens-Peer Kuska"
| ><kuska@XXXXXXX.de>
| >Cc: <llsaiyajin@XXXXXXX.de>; <demug@XXXXXXX.ch>
| >Sent: Thursday, September 15, 2005 11:30 PM
| >Subject: Re: Eigenen Code weitergeben
| >
| >
| >| Jens-Peer Kuska wrote:
| >|
| >| >Hallo,
| >| >
| >| >ich schätze solches Verhalten eigentlich 
nicht.
| >| >Zum einen ist es meist sinnlos. Weil sich 
kaum
| >| >jemand
| >| >einen größeren Quelltext anguckt und weil 
sich
| >| >eine störende
| >| >Kleinigkeit nicht selbst  beheben läßt.
| >| >
| >| >Neben dem Encode[] muß man nämlich noch
| >| >alle Symbole mit einem Protected Attribut
| >| >schützen und alle Funktionen mit 
ReadProtected.
| >| >
| >| >Natürlich kann man den Quelltext immer
| >| >rekonstruieren, in dem
| >| >man das Encode[] Package läd, sich die 
Names[]
| >des
| >| >Kontextes ausgeben
| >| >läßt, dann obige Attribute von den Symbolen 
des
| >| >Packages
| >| >entfernt und sich die Definition[],  die
| >Options[]
| >| >.. ausgeben läßt.
| >| >
| >| >
| >| Nee nee, beim Attribute "Locked" geht das 
nicht
| >..
| >|
| >|
| >
| >
| >
| >
|
| 



Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html