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