# Makro vor Dieben schützen -ActivX?-



## Wessy (1. März 2005)

Hallo alle zusammen,

 ich habe das Problem, das ich gerne meinen Makro-Quellcode vor Dieben schützen möche. Ich denke jeder kenn das, ein (wenigstens für ihn) tolles Makro geschrieben, alles wunderbar und jetzt kommt jemand daher und klaut das einfach, verändert 2 Zeilen und gibt dies nun als sein eigenes, tolles, unverfälschliches Makro aus. Ich denke, Gedankengut sollte man schützen können da dort ja auch eine Menge KnowHow drin stecken kann.....

 Ich habe in der aktuellen ct-Magazin eine sehr tolle und ausführliche Anleitung gefunden, mit der dies sehr detailiert beschrieben wird, leider viel zu detailiert für mich. Es werden dort Funktionen in VB6 beschrieben von denen ich absolut keine Ahnung habe. Ich bin mit diesem Tutorial (auch mit den beiliegenden Templatedateien) einfach nicht weiter gekommen.... Das Tool zum Erstellen des, in diesem Falle ActivX-Control, ist natürlich auch noch auf Englisch und die Hilfedatei fehlt.....

 Gibt es eine DAU-frendliche Anleitung um sein Makro direkt zu kompilieren?  Oder hat jemand von euch eine verständliche Anleitung? Anregungen, Hilfe oder sonst etwas....?

 Für Hilfe bin ich schon mal sehr dankbar. MFG der Wessy....


----------



## Wessy (1. März 2005)

Hat denn wirklich niemand eine Idee? Ich kann mir das nicht vorstellen, das wirklich noch nie jemand sein Makro sichern wollte....

 Los, falls ihr eine Idee dazu habt, Postet doch wenigstens mal einen Ansatz über den man diskutieren kann oder der einem direkt weiter hilt.....

 Nochmals Gruß vom Wessy


----------



## sigipr (11. März 2005)

Hallo,
ich schütze meine VBA-Makros in Excel mit Rechtsklick auf das entsprechende Projekt, danach Eigenschaften, Schutz. Danach können die Makros zwar noch ausgeführt werden, die Bearbeitung oder Ansicht ist nur nach Eingabe eines Passwortes möglich.

Ich hoffe, die Antwort hilft Dir, obwohl sie etwas spät kommt.
Viele Grüße
Sigi


----------



## Wessy (12. März 2005)

Hallo sigipr,

 klar hilft das weiter. Auch wenn es etwas später kam. Also da hab ich aber eine Frage: Du hast geschrieben: 


> mit Rechtsklick auf das entsprechende Projekt, danach Eigenschaften, Schutz.


 
 Mit Projekt meinst du was genau?

 Sollte das mit Makros bei Excel etwas anders Funktionieren, muss ich mich da noch mal einlesen. Aber ich finde (in meinem Fall bei Word) nicht das "Projekt". Ausserdem finde ich bezüglich meiner Makros keine Möglichkeit diese mit einem Passwortschutz zu versehen...


----------



## sigipr (14. März 2005)

Hallo Wessy,

ich hab' das mal in Word 2000 ausprobiert, funktioniert genauso, also:
Du wechselst mit Alt F11 in VB, dort über Ansicht den Projekt-Explorer aktivieren. Dann siehst Du in diesem Projekt-Fenster den Namen Deines Dokumentes (=Projekt). Den klickst Du mit rechts an, wählst Projekt-Eigenschaften und dort das Register Schutz.

Viele Grüße

Sigi


----------



## DrSoong (14. März 2005)

Das ist zwar ein Schutz, der lässt sich aber mit geeigneten Programmen in Nullkommanix aushebeln. Für den Standard-User ist er sicher schwer überwindbar, ein etwas geeichter Programmierer/Hacker hat den aber schnell überwunden.

Ich hab mal eine Möglichkeit gesehen, den VBA-Code zu verschlüsseln. Der Code ist lauffähig, kann jedoch nicht mehr eingesehen werden. Die Verschlüsselung kann aber auch nicht mehr rückgängig gemacht werden. Such mal in Google danach, vielleicht findet sich was.


Der Doc!


----------



## Wessy (14. März 2005)

Hallo DrSoong,

 vielen Dank für deinen Beitrag, aber ich habe die ultimative Lösung. Ich habe mir jetzt mal zum Spass das VisualBasicControlCreationEdition 5 Tool besorgt. Das gibt es kostenlos bei Microsoft zum download. Es ist eine abgespeckte Version von Visual Basic 5 und bietet weniger Funktionen (dafür kostenlos).

   Ich habe dann ein *Standard-EXE*-Projekt begonnen, ein Formular erstellt und mein Makro in die *Private Sub* eines Buttons reingeschrieben (Doppelklick auf den selbst erstellten Button). Dann einfach unter *Project / References* die *Microsoft Word 9.0 Object Library* (z.B. 9.0, geht auch mit 10.0,11.0) meinem Projekt hinzugefügt und letztlich die folgenden Befehle vor mein Makro geschrieben (wieder Doppelklick auf den selbst erstellten Button):


```
Dim WordApp As Word.Application
   Set Dim WordApp = GetObject(, "Word.application")
```
 
   Damit wird dann die Verbindung zwischen dem 'Makro' in Visual Basic und dem Word-Dokument hergestellt.

   Um das ganze dann auch noch 100% zum laufen zu bekommen, muss vor jeder Funktion die aus Word kommt, *WordApp. *stehen. Also z.B. so:



```
MsgBox WordApp.ActiveDocument.Content
  (Zeigt den Inhalt des aktuellen Word-Dokuments in einer MsgBox)
```
 

   Fertig!

 PS.: Um dann aus eurem Makro ein selbstständig laufendes Programm zu machen (*.EXE) solltet ihr nur noch auf *File / Make*... klicken und eure EXE-Datei erzeugen. Da das aber mit dem Programm, zumindest bei mir, nicht funktionierte habe ich das Projekt dann später auf der Arbeit mit Visual Basic 6 Pro in eine EXE-Datei kompiliert.

 Viel Spass beim pro_bier_en....


----------



## DrSoong (15. März 2005)

Ist eine Lösung, aber eine sehr unsaubere. Du musst ja die EXE mitliefern, auf dem System hier bei mir in der Arbeit kann ich aber z.B. keine EXE-Dateien runterladen/empfangen.


Der Doc!


----------



## Wessy (16. März 2005)

Hallo DrSoong,

 "unsaubere"...? Hmm, teile deine Meinung nicht. Ich denke, ein Makro als EXE-Datei zu verpacken, ist die mit Abstand sauberste Lösung.

 Bei einem Makro hast du das Problem, das viele Leute Diese nicht installieren können (das KnowHow fehlt). Ausserdem kann der Quelltext eingesehen werden und es läuft nur interpretiert ab. Ein ActivX ist da schon erheblich besser, es ist zwar (für DAUs) schwer zu installieren, ist dafür vor Änderung durch Dritte geschützt und ist vorher kompiliert worden. Eine EXE-Datei vereint alle Vorteile: Du kannst sie jedem DAU schicken und er muss nur einen Doppelklick beherschen, dein Quelltext kann nicht ausgelesen werden und ist kompiliert (einfach schneller).

 PS.: Dein Problem das du mit EXE-Dateien auf der Arbeit hast, kenne ich auch. Haben wir hier auch (wegen Sicherheitsrestriktionen). Aber denk doch mal nach. Dann schreibst du mir vorher eine Mail, und ich schicke dir die Datei ohne Dateiendung. Dann packst dus dir auf deine Platte und klebst das .EXE wieder hinten dran. Ist doch gar nicht so schwer. Oder ich schicks dir per gelber Post. Mal ganz ehrlich: Weil du auf der Arbeit gerade EXE-Dateien nicht empfangen kannst, ist das eine unsaubere Lösung?  Was machst du denn, wenn jegliche Downloads gesperrt werden....?  Dann ist alles unsauber......

   Was würdest du denn als "saubere" Lösung bezeichnen...?


----------



## KalMan (25. Mai 2005)

Also nichts für ungut. Aber warum packt du nicht dein gesamtes fertiggestelltes Projekt mit einem Packer(winzip).Schützt die datei mit einem Passwort. Aus die Mouse. Wenn Du Info aus dem Projekt benötigst kommst jederzeit an den Quellcode. Die kompilierten kannst du jederzeit reaktivieren.

Manfred


----------



## Wessy (26. Mai 2005)

Schuldigung aber : Häää? Hatte das Glas kein Ende? 

 Wie jetzt? Also hast du auch wirklich den gesamten Thread gelesen? Es geht darum: Man soll mein Programm ausführen können und trotzdem nicht auf den Quellcode zugreifen können (Schutz vor Gedankengut). Wenn ich mein Makro als gepackte, gesicherte ZIP-Datei verpacke, kann auch niemand mehr mein Makro ausführen. Wenn ich dann jemandem das Passwort gebe, kann er auch ohne weiteres an den Quellcode ran da der ja bei Makros Plaintext ist. Also muss ich mein Projekt so verpacken, das es ausgeführt werden kann, aber der Quellcode vor Einsicht oder Manipulation geschützt ist. Und das geht meines Wissens am besten über den oben beschriebenen Weg.

  GreeZ der Wessy...


----------



## meilon (27. Mai 2005)

Hiho,
hast du die c't immernoch und eine scanner zuhause? Mich würde dieser Artikel brennend Interessieren 

mfg


----------



## dignsag (18. Juli 2005)

DrSoong hat gesagt.:
			
		

> Das ist zwar ein Schutz, der lässt sich aber mit geeigneten Programmen in Nullkommanix aushebeln. Für den Standard-User ist er sicher schwer überwindbar, ein etwas geeichter Programmierer/Hacker hat den aber schnell überwunden.
> 
> Ich hab mal eine Möglichkeit gesehen, den VBA-Code zu verschlüsseln. Der Code ist lauffähig, kann jedoch nicht mehr eingesehen werden. Die Verschlüsselung kann aber auch nicht mehr rückgängig gemacht werden. Such mal in Google danach, vielleicht findet sich was.
> 
> ...


 
 Übrigens, in dem c't artikel steht auch drin, dass man dazu nicht gerade ein Computer Crack sein muss. Es reicht eine solche geschützte Datei mit StarOffice oder OpenOffice zu öffnen und schon hat man zugriff auf den Code! Deshalb ist die Lösung von Wassy schon besser und vorallem sauberer als die mitgelieferte Möglichkeit von Microsoft


----------



## Wessy (18. Juli 2005)

Hi meilon,

 du hast recht, die ct' war der Gedankenanstoß um mich 'noch mal' mit dem Problem zu befassen. Habe zwar ein paar Monate vorher auch schon versucht eine Lösung zu finden, aber im Internet war nichts wirklich hilfreiches zu finden. Auch gab es keine klare Aussage wie "Ja, mit VB geht das auf jeden Fall". Deshalb hab ich meine Bemühungen bis zu dem Artikel auf Eis gelegt.
 Nur war die Lösung aus der ct so unglaublich schwierig zu verstehen (bin kein Anwendungsentwickler) das ich mich da doch lieber selbst rangesetzt habe. Denke das meine kleine Mini-Anleitung schon einigermaßen gut zu verstehen ist. ;-)

  PS.: Hast du das nach deren Angaben hinbekommen?


----------

