[erledigt] DLL laden unter Windows Enterprise/Server?

Antworten
Benutzeravatar
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?

Beitrag von Aidex »

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. :lol: Aber wie?
Grüße, Jörg
Zuletzt geändert von Aidex am Di 26. Okt 2021, 04:36, insgesamt 3-mal geändert.

Benutzeravatar
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?

Beitrag von Winni »

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

PascalDragon
Beiträge: 825
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?

Beitrag von PascalDragon »

Aidex hat geschrieben:
Do 3. Jun 2021, 10:40
Windows merkt sich dann anscheindend einen Hash-Wert gegen DLL-Manipulation, weil DLLs nicht mit einem Zertifikat signiert werden können.
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.
Aidex hat geschrieben:
Do 3. Jun 2021, 10:40
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. :lol: Aber wie?
Vielleicht hilft dir diese Anleitung weiter? Ich hab's nicht ausprobiert, da ich gerade kein OS mit aktiviertem AppLocker zur Hand habe.
FPC Compiler Entwickler

Benutzeravatar
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?

Beitrag von Aidex »

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. :D
Falls noch jemand Tipps, Ideen oder Anmerkungen hat, bitte immer her damit.
Danke und Grüße, Jörg

PascalDragon
Beiträge: 825
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?

Beitrag von PascalDragon »

Aidex hat geschrieben:
Do 3. Jun 2021, 12:35
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. :D
Falls noch jemand Tipps, Ideen oder Anmerkungen hat, bitte immer her damit.
Probier mal die Anleitung aus, die ich oben verlinkt habe. Vielleicht hilft das tatsächlich weiter.
FPC Compiler Entwickler

Benutzeravatar
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?

Beitrag von Aidex »

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? :lol:
Oder bin ich der Einzige mit speziell diesem Problem? Dann könnte es vielleicht noch eine ganz andere Ursache haben.

Benutzeravatar
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?

Beitrag von Winni »

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

Benutzeravatar
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?

Beitrag von Aidex »

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

Benutzeravatar
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?

Beitrag von Winni »

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

Ich bin nicht doof.

Dann probier es eben nicht.
Und dann bleibt es eben gelockt.

Winni

Benutzeravatar
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?

Beitrag von Aidex »

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
Zuletzt geändert von Aidex am Fr 4. Jun 2021, 08:10, insgesamt 1-mal geändert.

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: [erledigt] DLL laden unter Windows Enterprise/Server?

Beitrag von six1 »

Bitte eine Tüte mit den kleinen spitzen Steinen... :lol:
Gruß, Michael

Antworten