[erledigt] DLL laden unter Windows Enterprise/Server?
- Aidex
- Beiträge: 60
- Registriert: Do 24. Sep 2020, 07:02
- OS, Lazarus, FPC: Win10 64bit, Laz v2.0.10
- CPU-Target: AMD64
[erledigt] DLL laden unter Windows Enterprise/Server?
Moin!
EDIT: Es lag an der DLL selbst (Drittanbieter), die ein Kompatibilitäts-Problem hat. Weiterlesen lohnt nicht!
Situation: Ich lade eine DLL per Windows.LoadLibrary() bei Bedarf dynamisch nach.
Dies funktioniert unter Windows 10 Home/Pro ganz prächtig (alles 64 Bit: OS + Programm + DLL). Damit bin ich sehr glücklich.
Doch unter Windows Enterprise/Server schlägt LoadLibrary() immer fehl, immer Result=0. Die DLL ist aber vorhanden (FileExists true).
Durch googeln bin ich auf die Stichworte "AppLocker" und "DLL Rules" gestoßen. Hatte ich vorher noch nie gehört.
Ich vermute, dass Windows Enterprise/Server verlangt, dass die DLL erst in AppLocker per DLL Rule freigegeben werden muss.
Windows merkt sich dann anscheindend einen Hash-Wert gegen DLL-Manipulation, weil DLLs nicht mit einem Zertifikat signiert werden können.
Mein Programm habe ich signiert (Code Signing), aber das nützt mir zum Laden der DLL nichts.
Nun mein ganz banales Problem: Wo finde ich AppLocker und wie konfiguriert man es?
Mir steht ein Windows Server 2016 zum Testen zur Verfügung. Aber wenn ich da in den Apps oder in den Systemeinstellungen nach AppLocker suche, finde ich nichts.
Ich habe natürlich danach gegoogelt (vielleicht nicht mit den richtigen Worten), finde aber immer nur als Anleitung: "verwenden Sie AppLocker". Ja, haha. Aber wie?
Grüße, Jörg
EDIT: Es lag an der DLL selbst (Drittanbieter), die ein Kompatibilitäts-Problem hat. Weiterlesen lohnt nicht!
Situation: Ich lade eine DLL per Windows.LoadLibrary() bei Bedarf dynamisch nach.
Dies funktioniert unter Windows 10 Home/Pro ganz prächtig (alles 64 Bit: OS + Programm + DLL). Damit bin ich sehr glücklich.
Doch unter Windows Enterprise/Server schlägt LoadLibrary() immer fehl, immer Result=0. Die DLL ist aber vorhanden (FileExists true).
Durch googeln bin ich auf die Stichworte "AppLocker" und "DLL Rules" gestoßen. Hatte ich vorher noch nie gehört.
Ich vermute, dass Windows Enterprise/Server verlangt, dass die DLL erst in AppLocker per DLL Rule freigegeben werden muss.
Windows merkt sich dann anscheindend einen Hash-Wert gegen DLL-Manipulation, weil DLLs nicht mit einem Zertifikat signiert werden können.
Mein Programm habe ich signiert (Code Signing), aber das nützt mir zum Laden der DLL nichts.
Nun mein ganz banales Problem: Wo finde ich AppLocker und wie konfiguriert man es?
Mir steht ein Windows Server 2016 zum Testen zur Verfügung. Aber wenn ich da in den Apps oder in den Systemeinstellungen nach AppLocker suche, finde ich nichts.
Ich habe natürlich danach gegoogelt (vielleicht nicht mit den richtigen Worten), finde aber immer nur als Anleitung: "verwenden Sie AppLocker". Ja, haha. Aber wie?
Grüße, Jörg
Zuletzt geändert von Aidex am Di 26. Okt 2021, 04:36, insgesamt 3-mal geändert.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: DLL laden mit AppLocker DLL Rules?
Hallo!
Ich hab keine Ahnung, was Windows da intern treibt.
Ich kenne auch keine Lösung auf programmierbarer Ebene.
Aber:
Es gibt diverse Unlocker, die ihren Job machen und die man für einige Jobs bei Windows braucht - z.B. um das "nach Hause telefonieren" abzuschalten.
Versuch doch erstmal so einen Unlocker auf die DLL loszulassen. Wenn es klappt, kannst Du den ja per Lazarus starten.
Winni
Ich hab keine Ahnung, was Windows da intern treibt.
Ich kenne auch keine Lösung auf programmierbarer Ebene.
Aber:
Es gibt diverse Unlocker, die ihren Job machen und die man für einige Jobs bei Windows braucht - z.B. um das "nach Hause telefonieren" abzuschalten.
Versuch doch erstmal so einen Unlocker auf die DLL loszulassen. Wenn es klappt, kannst Du den ja per Lazarus starten.
Winni
-
- Beiträge: 834
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: DLL laden mit AppLocker DLL Rules?
Natürlich können auch Bibliotheken signiert werden. Das hat nichts mit EXE vs. DLL zu tun, das ist einfach eine Möglichkeit des PE Formats an sich. Ob Windows dann allerdings die Signatur einer Bibliothek überprüft (und unter welchen Bedingungen), das steht auf 'nem anderen Blatt und kann ich gerade auch nicht beantworten.
Vielleicht hilft dir diese Anleitung weiter? Ich hab's nicht ausprobiert, da ich gerade kein OS mit aktiviertem AppLocker zur Hand habe.Aidex hat geschrieben: ↑Do 3. Jun 2021, 10:40Nun mein ganz banales Problem: Wo finde ich AppLocker und wie konfiguriert man es?
Mir steht ein Windows Server 2016 zum Testen zur Verfügung. Aber wenn ich da in den Apps oder in den Systemeinstellungen nach AppLocker suche, finde ich nichts.
Ich habe natürlich danach gegoogelt (vielleicht nicht mit den richtigen Worten), finde aber immer nur als Anleitung: "verwenden Sie AppLocker". Ja, haha. Aber wie?
FPC Compiler Entwickler
- Aidex
- Beiträge: 60
- Registriert: Do 24. Sep 2020, 07:02
- OS, Lazarus, FPC: Win10 64bit, Laz v2.0.10
- CPU-Target: AMD64
Re: DLL laden mit AppLocker DLL Rules?
Oh jau, eine DLL lässt sich tatsächlich in-File signieren (geht bei .exe .dll .ocx .sys und wenigen anderen Dateiformaten).
Ich hatte mir immer eingeredet, dass man DLLs nicht mit einem datei-internen Header signieren könnte.
Habe ich ausprobiert, leider besteht unter Windows Enterprise/Server das Lade-Problem trotz signierter DLL weiterhin.
Falls mein Problem überhaupt etwas mit AppLocker zu tun hat (oder ist AppLocker nur optional?) muss ich mich
wohl mit "Local Group Policies" u.ä. beschäftigen. Von sowas habe ich bisher überhaupt keine Ahnung.
Das ist wohl der Unterschied zwischem einem Programmierer und einem Netzwerkadministrator.
Falls noch jemand Tipps, Ideen oder Anmerkungen hat, bitte immer her damit.
Danke und Grüße, Jörg
Ich hatte mir immer eingeredet, dass man DLLs nicht mit einem datei-internen Header signieren könnte.
Habe ich ausprobiert, leider besteht unter Windows Enterprise/Server das Lade-Problem trotz signierter DLL weiterhin.
Falls mein Problem überhaupt etwas mit AppLocker zu tun hat (oder ist AppLocker nur optional?) muss ich mich
wohl mit "Local Group Policies" u.ä. beschäftigen. Von sowas habe ich bisher überhaupt keine Ahnung.
Das ist wohl der Unterschied zwischem einem Programmierer und einem Netzwerkadministrator.
Falls noch jemand Tipps, Ideen oder Anmerkungen hat, bitte immer her damit.
Danke und Grüße, Jörg
-
- Beiträge: 834
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: DLL laden mit AppLocker DLL Rules?
Probier mal die Anleitung aus, die ich oben verlinkt habe. Vielleicht hilft das tatsächlich weiter.Aidex hat geschrieben: ↑Do 3. Jun 2021, 12:35Falls mein Problem überhaupt etwas mit AppLocker zu tun hat (oder ist AppLocker nur optional?) muss ich mich
wohl mit "Local Group Policies" u.ä. beschäftigen. Von sowas habe ich bisher überhaupt keine Ahnung.
Das ist wohl der Unterschied zwischem einem Programmierer und einem Netzwerkadministrator.
Falls noch jemand Tipps, Ideen oder Anmerkungen hat, bitte immer her damit.
FPC Compiler Entwickler
- Aidex
- Beiträge: 60
- Registriert: Do 24. Sep 2020, 07:02
- OS, Lazarus, FPC: Win10 64bit, Laz v2.0.10
- CPU-Target: AMD64
Re: DLL laden unter Windows Enterprise/Server?
Oder umgekehrt gefragt:
Gibt es hier jemanden, der ein selbstprogrammiertes Programm unter Windows Enterprise/Server einsetzt, in dem eine DLL geladen wird?
Oder bin ich der Einzige?
Oder bin ich der Einzige mit speziell diesem Problem? Dann könnte es vielleicht noch eine ganz andere Ursache haben.
Gibt es hier jemanden, der ein selbstprogrammiertes Programm unter Windows Enterprise/Server einsetzt, in dem eine DLL geladen wird?
Oder bin ich der Einzige?
Oder bin ich der Einzige mit speziell diesem Problem? Dann könnte es vielleicht noch eine ganz andere Ursache haben.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: DLL laden unter Windows Enterprise/Server?
Hi!
Windows Enterprise kommt nicht ins Haus:
Aber hast Du Dein Glück schon mal mit einem Unlocker versucht?
a) Kapersky hat einen
b) Auf der Desinfect CD von der c't ist einer drauf
c) Ashampoo bietet einen an
Mindestens b) ist kostenfrei
Winni
Windows Enterprise kommt nicht ins Haus:
Aber hast Du Dein Glück schon mal mit einem Unlocker versucht?
a) Kapersky hat einen
b) Auf der Desinfect CD von der c't ist einer drauf
c) Ashampoo bietet einen an
Mindestens b) ist kostenfrei
Winni
- Aidex
- Beiträge: 60
- Registriert: Do 24. Sep 2020, 07:02
- OS, Lazarus, FPC: Win10 64bit, Laz v2.0.10
- CPU-Target: AMD64
Re: DLL laden unter Windows Enterprise/Server?
@Winni: Danke für deine Beteiligung, aber ich denke du bist auf der falschen Fährte.
Es geht hier nicht Virus-Infektionen (die kann ich selbst per Hash-Vergleich ausschließen),
sondern vermutlich um das System-Sicherheits-Konzept von Windows Enterprise/Server.
Die von dir genannten Unlocker beziehen sich auf Verschlüsselungstrojaner, aber damit habe ich hier nichts zu tun.
Ich vermute, dass das Sicherheitskonzept von Windows Enterprise/Server vorsieht, dass eine DLL
erst dann geladen werden kann, wenn sie per DLL-Rule vom Admin zum Gebrauch freigegeben wurde.
Vermutlich erledigt dies normalerweise ein Installer mit Admin-Rechten, aber ich habe keinen Installer und möchte es manuell machen.
Es geht hier nicht Virus-Infektionen (die kann ich selbst per Hash-Vergleich ausschließen),
sondern vermutlich um das System-Sicherheits-Konzept von Windows Enterprise/Server.
Die von dir genannten Unlocker beziehen sich auf Verschlüsselungstrojaner, aber damit habe ich hier nichts zu tun.
Ich vermute, dass das Sicherheitskonzept von Windows Enterprise/Server vorsieht, dass eine DLL
erst dann geladen werden kann, wenn sie per DLL-Rule vom Admin zum Gebrauch freigegeben wurde.
Vermutlich erledigt dies normalerweise ein Installer mit Admin-Rechten, aber ich habe keinen Installer und möchte es manuell machen.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: DLL laden unter Windows Enterprise/Server?
Hi!Aidex hat geschrieben: ↑Do 3. Jun 2021, 17:36@Winni: Danke für deine Beteiligung, aber ich denke du bist auf der falschen Fährte.
Es geht hier nicht Virus-Infektionen (die kann ich selbst per Hash-Vergleich ausschließen),
sondern vermutlich um das System-Sicherheits-Konzept von Windows Enterprise/Server.
Die von dir genannten Unlocker beziehen sich auf Verschlüsselungstrojaner, aber damit habe ich hier nichts zu tun.
Ich vermute, dass das Sicherheitskonzept von Windows Enterprise/Server vorsieht, dass eine DLL
erst dann geladen werden kann, wenn sie per DLL-Rule vom Admin zum Gebrauch freigegeben wurde.
Vermutlich erledigt dies normalerweise ein Installer mit Admin-Rechten, aber ich habe keinen Installer und möchte es manuell machen.
Ich bin nicht doof.
Dann probier es eben nicht.
Und dann bleibt es eben gelockt.
Winni
- Aidex
- Beiträge: 60
- Registriert: Do 24. Sep 2020, 07:02
- OS, Lazarus, FPC: Win10 64bit, Laz v2.0.10
- CPU-Target: AMD64
Re: [erledigt] DLL laden unter Windows Enterprise/Server?
Moin zusammen!
Es hat sich erledigt, und es ist ganz anders als vermutet.
Die DLL selbst ist das Problem, weil sie ein Kompatibilitätsproblem zu Windows Enterprise/Server hat.
Dies schreibt der Anbieter leider nicht auf seiner Webseite, sondern ich habe es jetzt irgendwo versteckt in einem Bug-Report gefunden.
Mit einer älteren Version der DLL funktioniert es!
Die problematische DLL besitzt irgendwelche festen Abhängigkeiten, so dass bereits das Laden per Windows.LoadLibrary() fehlschlägt.
Das einzig Interessante daran ist, dass es soetwas gibt.
Mit meiner Vermutung, dass eine DLL unter Enterprise/Server vielleicht zunächst freigegeben werden müsse, lag ich komplett falsch.
Da hatten mich die Google-Ergebnisse mit "DLL Rules" in die Irre geführt. Somit war dieser ganze Thread für die Katz. Sorry dafür.
Danke an alle Tippgeber.
Grüße, Jörg
Es hat sich erledigt, und es ist ganz anders als vermutet.
Die DLL selbst ist das Problem, weil sie ein Kompatibilitätsproblem zu Windows Enterprise/Server hat.
Dies schreibt der Anbieter leider nicht auf seiner Webseite, sondern ich habe es jetzt irgendwo versteckt in einem Bug-Report gefunden.
Mit einer älteren Version der DLL funktioniert es!
Die problematische DLL besitzt irgendwelche festen Abhängigkeiten, so dass bereits das Laden per Windows.LoadLibrary() fehlschlägt.
Das einzig Interessante daran ist, dass es soetwas gibt.
Mit meiner Vermutung, dass eine DLL unter Enterprise/Server vielleicht zunächst freigegeben werden müsse, lag ich komplett falsch.
Da hatten mich die Google-Ergebnisse mit "DLL Rules" in die Irre geführt. Somit war dieser ganze Thread für die Katz. Sorry dafür.
Danke an alle Tippgeber.
Grüße, Jörg
Zuletzt geändert von Aidex am Fr 4. Jun 2021, 08:10, insgesamt 1-mal geändert.
Re: [erledigt] DLL laden unter Windows Enterprise/Server?
Bitte eine Tüte mit den kleinen spitzen Steinen...
Gruß, Michael