AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene user32.dll

Ein Thema von Clemens L. · begonnen am 4. Sep 2010 · letzter Beitrag vom 4. Sep 2010
Antwort Antwort
Clemens L.

Registriert seit: 27. Apr 2008
35 Beiträge
 
Delphi 2009 Architect
 
#1

Eigene user32.dll

  Alt 4. Sep 2010, 12:28
Hallo,

ich versuche derzeit einem Programm eine von mir geschriebene DLL als user32.dll anzubieten. Es handelt sich eigentlich nur um einen kleinen Test, bei dem ein paar Funktionen verändert werden sollen.

Allerdings scheint es Windows überhaupt nicht zu interessieren wenn sich eine user32.dll direkt im Programmverzeichnis befindet, es wird immer die original-Datei verwendet. Woran liegt das? Kann ich ein Programm irgendwie dazu bringen, die lokale Datei vorzuziehen?

gruß
Clemens
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Eigene user32.dll

  Alt 4. Sep 2010, 12:32
Das liegt daran, dass die DLL schon lange geladen ist von anderen Programmen und dein Zielprogramm sie nur noch in seinen Adressraum mappt ohne sie wirklich zu laden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Clemens L.

Registriert seit: 27. Apr 2008
35 Beiträge
 
Delphi 2009 Architect
 
#3

AW: Eigene user32.dll

  Alt 4. Sep 2010, 12:36
Das liegt daran, dass die DLL schon lange geladen ist von anderen Programmen und dein Zielprogramm sie nur noch in seinen Adressraum mappt ohne sie wirklich zu laden.
Verstehe ich nicht ganz. Das Zielprogramm ist ein einfaches Testprogramm, das z.B. die MessageBoxW-Funktion importiert:

function MessageBoxW; external user32 name 'MessageBoxW'; So sollte dann doch der Zugriff direkt auf die lokale Datei gehen. (Oder wird die echte DLL nicht jedesmal neu geladen wenn man ein Programm startet? )

Gruß

Edit: Das Programm nimmt die DLL an, wenn ich mit nem Hex-Editor jedes vorkommen von user32.dll durch user33.dll ersetze und die DLL entsprechend benenne. Ist leider nicht sehr "elegant" die Lösung, daher wäre es schon gut zu wissen, ob man das auch direkt machen kann.
Clemens

Geändert von Clemens L. ( 4. Sep 2010 um 12:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Eigene user32.dll

  Alt 4. Sep 2010, 13:32
Ein glück das bei System-DLL's sich Windows nicht so leicht austricksen lässte. Die aktuell hochkochende DLL-Lücke wäre evtl. noch schlimmer.

Was du machen willst lässt sich u.U. durch einen Globaln Hook auf die entsprechenden API-Funktionen erledigten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Eigene user32.dll

  Alt 4. Sep 2010, 14:47
(Oder wird die echte DLL nicht jedesmal neu geladen wenn man ein Programm startet? )
Genau so ist es. Windows weiß, dass die DLL schon geladen ist und mappt eben nur die exportierten Funktionen in den Adressraum deines Programms ohne sie neu zu laden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

AW: Eigene user32.dll

  Alt 4. Sep 2010, 18:08
User32.dll ist eine von Windows bekannte DLL, die zuerst aus dem System32 Verzeichnis geladen wird von LoadLibrary o.Ä.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Eigene user32.dll

  Alt 4. Sep 2010, 18:43
Es sei denn man gibt einen qualifizierten Pfad mit an,
aber für statisch geladene DLLs ist das nicht unbedingt "optimal".

function MessageBoxW; external 'C:\MyProg\user32.dllname 'MessageBoxW'; ging doch?
Nja, aber damit kann man eh nur eigene Deklarationen im Programm austauschen/neu deklarieren und nicht andere Deklarationen beeinflussen.

Also Hooks sollten besser laufen.
$2B or not $2B
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#8

AW: Eigene user32.dll

  Alt 4. Sep 2010, 21:37
verrat uns doch mal, was Du damit bezwecken willst.
Dein vorgehen sieht so aus, als wolltest Du ein Programm unbedingt behumsen.
Warum? Was soll es bezwecken? Gefälschte System-DLLs unterzujubeln ist ein denkbar schlechter Weg, aber es gibt sicherlich noch andere Lösungsansätze.

Gruß aus dem Hohen Norden

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Clemens L.

Registriert seit: 27. Apr 2008
35 Beiträge
 
Delphi 2009 Architect
 
#9

AW: Eigene user32.dll

  Alt 4. Sep 2010, 22:25
verrat uns doch mal, was Du damit bezwecken willst.
Dein vorgehen sieht so aus, als wolltest Du ein Programm unbedingt behumsen.
Warum? Was soll es bezwecken? Gefälschte System-DLLs unterzujubeln ist ein denkbar schlechter Weg, aber es gibt sicherlich noch andere Lösungsansätze.

Gruß aus dem Hohen Norden

Thomas
Hat nicht wirklich einen Sinn, hatte halt einfach die Idee zwischen ein Programm und das System meine eigene DLL zu stecken, quasi als "Hook-Ersatz". Dieser Thread enstand aus meiner Verwirrung warum das ganze nicht so wollte wie ich.

Hätte mir aber auch denken können, dass man nicht so ohne weiteres Systemdateien ersetzen kann.

Gruß
Clemens
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz