| |
VB.NET - Ein- und UmsteigerRe: DLL an spezielle exe binden | | | Autor: Schü | Datum: 26.09.14 12:35 |
| naja. das kommt wohl nicht in Frage bei mir.
Erstens habe ich alles in VB.NET inkl. Steuerelemente, Multithreading-Klassen etc.
und 2. wollen wir ja nicht zurück.
Muss ich mich mal näher mit Ngen.exe beschäftigen...
Evtl. kann mir ja jemand irgend einen Link zu einem Tutorial o.ä. schicken...
Danke erstmal.
Schü | |
DLL an spezielle exe binden | | | Autor: Schü | Datum: 17.09.14 16:32 |
| Hallo.
Ich habe ein Projekt, welches eine selbst entwickelte DLL nutzt, um diverse Funktionen zu kapseln.
Grund: der Quellcode der Funktionen in der DLL soll nicht im Programmcode direkt einsehbar sein.
Die Funktionen werden also über die DLL ausgeführt.
Nun kann aber jeder, der die DLL hat, auch diese Funktionen in VB.net nutzen, da sie als Public deklariert sind.
Kann man die Nutzung der Funktionen/der DLL irgendwie auf die die EXE beschränken, sodass kein anderes Programm diese Funktionen nutzen kann?
Schü | |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 17.09.14 17:00 |
| Einfache Methode:
Du richtest in der DLL eine Klasse mit Passwort-Eigenschaft ein
(eventuell Verschlüsselung nutzen).
Beim Erstellen von Klassen in der DLL ist jeweils in deren Konstruktor zu prüfen,
ob das korrekte Passwort übergeben worden ist. Falls nicht, wird eine
Ausnahme ausgelöst.
Nur wenn die Exe beim Programmstart das Passwort übergibt, werden
die Klassen verfügbar und die Methoden der DLL-Kassen ausgeführt.
| |
Re: DLL an spezielle exe binden | | | Autor: Schü | Datum: 24.09.14 17:32 |
| Hallo Manfred,
leider kann ich mich erst jetzt melden (Urlaub).
Soweit verstanden. Ist denn die Klasse in der DLL, die Du meinst, nur einmal da oder
muss jede Klasse der DLL im Konstruktor ein PW unterstützen?
Hast Du evtl. ein Code-Fragment parat, wie ich das implementieren könnte?
Schü | |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 24.09.14 18:27 |
| Zunächst wäre zu klären, welche Ziele genau Du verfolgst.
Es macht kaum Sinn, eine DLL nur für eine bestimmte Anwendung zu erstellen.
Solchen Code kannst Du auch direkt in das EXE-Projekt aufnehmen.
Der Net-Precompiler übersetzt in eine "Zwischensprache" aus der der
zugrundeliegende Code wieder gewonnen werden kann.
Man verwendet deshalb spezielle Tools, um den Code gegen allzu leichte
"Übernahmen" zu schützen.
http://msdn.microsoft.com/de-de/library/bb979521.aspx
Beitrag wurde zuletzt am 24.09.14 um 18:35:28 editiert. | |
Re: DLL an spezielle exe binden | | | Autor: Schü | Datum: 25.09.14 11:16 |
| Danke für den Link.
Es ist immer das gleiche: wenn man sehr komfortabel und recht Hardwareunabhängig Programmieren kann, hat man Einbußen in der Sicherheit hinzunehmen.
In meinem speziellem Fall habe ich ein Programm entwickelt, was zu einem großem Teil Optimierungen
für die Herstellung gewisser Produkte in der Industrie enthält.
Da der Quelltext des Hauptprogramms dem AG übergeben werden soll, ohne aber meine eigentlichen eigenen Algorithmen preiszugeben (so die Vereinbarung), habe ich diese in eine DLL gepackt, die das Hauptprogramm eben nutzt.
Dadurch können die Algo's genutzt werden, das HP auch ggf. geändert werden, aber eben nicht unmittelbar der Quelltext der Algo's eingesehenen werden (wenn man von bösartiger Dekompilierung o.ä. absieht). Dann ist eh alles Sch*****
Da auch das Hauptprogramm vor "unberechtigter Benutzung geschützt" ist, macht es wenig Sinn, eine
ungeschützte DLL beizufügen, deren Algo's jeder ja in einem eigenen Programm nutzen kann.
Daher soll die DLL auch der Einfachheit halber an die Exe gebunden werden.
Ich denke, Ich mache das mit eine Klasse, die eine interne Shared-Eigenschaft hat, sodass diese nur einmal gesetzt wird und nicht jedes mal abgefragt werden muss. Dies gilt dann offenbar für alle Instanzen der DLL für das Hauptprogramm.
Das werde ich zunächst mal testen...
Danke Schü | |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 25.09.14 16:49 |
| Wenn Du Deine Algorithmen halbwegs sichern willst,
mußt Du auf Plattform-Unabhängigkeit verzichten und
in die Bibliothek in Maschinensprache kompilieren -
vielleicht das Ngen-Tool mal näher anschauen.
Ansonsten machen Sicherungs-Maßnahmen nahezu keinen Sinn.
Der Code der Algorithmen kann meist - mit einem Mausclick -
aus der Zwischensprache gewonnen und in andere Anwendungen
kopiert werden.
| |
Re: DLL an spezielle exe binden | | | Autor: Schü | Datum: 26.09.14 07:44 |
| Danke für den Hinweis.
Ich hatte schon mal Ngen.exe angeschaut (siehe deinem Link).
Nur fehlt mir dazu die Info, was mit der Übersetzung in Maschinensprache für
Konsequenzen entstehen. wie viele unterschiedliche Versionen der DLL müsste man erstellen und
wann laufen diese denn nicht?
Was bestimmt denn die Lauffähigkeit einer solchen DLL, wenn wir bei Windows XP bis Windows 8.1 sprechen?
Hat damit jemand Erfahrung und wie wird so eine DLL verteilt?
Schü | |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 26.09.14 12:22 |
| NGen habe ich bisher nicht verwendet.
Grundsätzlich muß man wohl unterscheiden,
ob Code gegen Kopieren/Analysieren gesichert werden soll oder
ob auch die Nutzung von Klassen/Methoden behindert werden soll.
Im ersten Fall erstelle ich "native" C++-Bibliotheken, deren Methoden
in VB.Net geeignet importiert werden müssen.
Im zweiten Fall erstelle ich in der nativen DLL Methodenaufrufe,
deren erforderliche Parameterbelegung nach außen nicht direkt erkennbar ist.
Entspricht ein Aufruf nicht exakt den Erfordernissen, stürzt diese Bibliothek
einfach ab.
| |
Re: DLL an spezielle exe binden | | | Autor: Schü | Datum: 26.09.14 12:24 |
| OK.
und alles in C/C++?
Keine Chance das irgendwie von VB.net zu übernehmen? | |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 26.09.14 12:32 |
| VB6 prof. kann Bibliotheken in Maschinensprache übersetzen.
So weit ich erinnere, wird dafür ein modifizierter C-Compiler verwendet.
Aber das ist dann eine ActiveX-DLL, die also im Ziel-System registriert
werden muß. Das anwendende Projekt benötigt einen COM-Verweis darauf.
| |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 26.09.14 12:39 |
| So weit ich verstanden habe, geht es Dir doch nur um
bestimmte sensible Algorithmen, die Du speziell entwickelt
hast. Diesen Code könntest Du auslagern. | |
Re: DLL an spezielle exe binden | | | Autor: Schü | Datum: 26.09.14 12:42 |
| ja. aber nicht in C++ oder VB6.0, dann müsste ich alles neu machen. das sind Wochen!
sonst sind die schon in einer DLL (VB.NET) ausgelagert. | |
Re: DLL an spezielle exe binden | | | Autor: Manfred X | Datum: 26.09.14 12:46 |
| Das spricht aber nicht dafür, daß Dein Programm gut strukturiert ist .....
Bestimmte sensible Klassen auszulagern, sollte kein allzu großes Problem sein.
| |
Re: DLL an spezielle exe binden | | | Autor: Schü | Datum: 26.09.14 12:48 |
| Ja. Du hast natürlich Recht. Die Struktur ist sicherlich verbesserungswürdig.
Aber der Aufwand wäre einfach zu groß für mich.
Ich habe keinerlei Ahnung von C++ oder C.
| |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|