AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?
Thema durchsuchen
Ansicht
Themen-Optionen

32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

Ein Thema von SearchBot · begonnen am 25. Mai 2016 · letzter Beitrag vom 17. Sep 2022
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#11

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 25. Mai 2016, 15:15
Das ist nicht ganz korrekt. Zumindest kann eine 32 Bit Anwendung "ohne Probleme" eine 64 Bit DLL laden. So funktioniert übrigens auch die ganze WOW64 Emulation.
Das wäre mir neu. Nicht umsonst gibt es unter Windows 64 Bit zwei unterschiedliche Verzeichnisse c:\Windows\system32 (64 Bit) und c:\Windows\SysWOW64 (32 Bit), bei denen die jeweilige DLL drinliegt.

PS: Man beachte vor allem die äußerst sinnvolle Benennung der Verzeichnisse unter Windows 64 Bit. Was MS da geraucht hat, möchte ich mal wissen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 25. Mai 2016, 15:26
Irgendwie wird hier was missverstanden.

Es geht hier um ein USB Gerät die Treiber sind nun mal aufgrund des Treibermodels von Windows zwingend auf 64Bit ausgelegt.
Da kann man tricksen wie man will.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 25. Mai 2016, 23:19
Das wäre mir neu. Nicht umsonst gibt es unter Windows 64 Bit zwei unterschiedliche Verzeichnisse c:\Windows\system32 (64 Bit) und c:\Windows\SysWOW64 (32 Bit), bei denen die jeweilige DLL drinliegt.
Hast du den Artikel gelesen?

Irgendwie wird hier was missverstanden.

Es geht hier um ein USB Gerät die Treiber sind nun mal aufgrund des Treibermodels von Windows zwingend auf 64Bit ausgelegt.
Da kann man tricksen wie man will.
Der Treiber muss 64-bit sein, aber die dazugehörige DLL, die die Kommunikation mit dem Treiber übernimmt, kann ja trotzdem als 32-bit Kompilat vorliegen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#14

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 27. Mai 2016, 00:39
Irgendwie wird hier was missverstanden.

Es geht hier um ein USB Gerät die Treiber sind nun mal aufgrund des Treibermodels von Windows zwingend auf 64Bit ausgelegt.
Da kann man tricksen wie man will.

gruss
Äh.. nein.
Das System ist 64bit.
Den Treiber gibt es in 64Bit und in "x32onx64".
Die Schnittstellen-DLL hat 32bit.
Es gibt auch eine mit 64bit, wie ich jetzt analysiert habe.
Beide jedoch sagen, wenn sie von meinem 32bit-Programm geladen werden sollen, daß die DLL nicht gefunden wird.

Zacherl macht mir Hoffungen
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#15

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 27. Mai 2016, 02:59
Die Schnittstellen-DLL hat 32bit.
Es gibt auch eine mit 64bit, wie ich jetzt analysiert habe.
Beide jedoch sagen, wenn sie von meinem 32bit-Programm geladen werden sollen, daß die DLL nicht gefunden wird.
Dann analysiere doch mal die Abhängigkeiten, wie von mir im EDIT oben vorgeschlagen. Sonst kann man nur raten und im Nebel stochern. Neben dem genannten FileAlyzer ist Dependency Walker eine weitere Möglichkeit. Es gibt auch diverse Plugins für Total Commander (FileInfo und PE Viewer), die für eine simple Analyse ausreichen.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 27. Mai 2016, 06:25
Die einfachste Variante wurde noch nicht genannt:
Nimm einfach den Process Monitor und schau nach was da versucht wird zu laden. Den Filter kannst du auf "Process Name" "is" "Deine Exe ohne Pfad" setzen, das war es.

Wenn dort weitere DLLs versucht werden zu laden oder ähnliches, wirst du das dort sehen. Und wenn die DLL an der falschen Stelle gesucht wird, siehst du das auch.

Das ist viel einfacher als die DLLs zu analysieren und feste Abhängigkeiten zu suchen.

Eine Möglichkeit:
Irgendwo liegt eine 64-Bit Version der Datei im Pfad. Ich weiß nicht, ob LoadLibrary dann weiter nach passenden Varianten sucht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#17

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 27. Mai 2016, 09:50
Das wäre mir neu. Nicht umsonst gibt es unter Windows 64 Bit zwei unterschiedliche Verzeichnisse c:\Windows\system32 (64 Bit) und c:\Windows\SysWOW64 (32 Bit), bei denen die jeweilige DLL drinliegt.
Hast du den Artikel gelesen?
Ich habe ihn mal überflogen und für mich klingt das ganze ziemlich Voodoomäßig. Wer weiss, wann einem das mal um die Ohren fliegt, weil sich die Zugriffsadressen ändern oder ähnliches... ich würde solche Hacks jedenfalls nur im absoluten Notfall nutzen.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#18

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 28. Mai 2016, 05:04
Mit Zugriffsadressen hat das ja nichts zu tun und dass sich das Pseudo-Segment ändert, ist auch höchst unwahrscheinlich. Dennoch hast du natürlich recht, dass es ein Hack ist und ab Win8.1 V3 funktioniert das Prinzip sowieso nicht mehr ohne Weiteres, da eine neue Anti-Exploit Technologie als Seiteneffekt auch das Heaven Gate unbrauchbar macht.

Für den Threadersteller ist das Ganze wohl sowieso unerheblich, da er ja eine 32-Bit DLL besitzt. Vermutlich benötigt diese DLL lediglich eine bestimmte Version der C-Runtimes, weshalb er den File-not-found Error bekommt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#19

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 29. Mai 2016, 12:52
Hm..

die Beispiele vom Hersteller funktionieren auf 64bit auch nicht richtig... möglicherweise ein allgemeines Problem.

Mit dem FileAnalyzer erkenne ich jetzt nichts, was mir weiterhilft, aber interessant ist er allemal
Mit den anderen Tools will ich mich noch beschäftigen.

Wahrscheinlich wäre es das Beste, wenn ich mein Tool auf 64bit compilieren würde, dann läut es ohne wow64-Emulation und hat zu den richtigen DLLs Zugriff, oder?
Mit Delphi XE scheine ich aber keine 64-Bit Apps generieren zu können, oder habe ich was übersehen?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 29. Mai 2016, 13:06
Das wäre mir neu. Nicht umsonst gibt es unter Windows 64 Bit zwei unterschiedliche Verzeichnisse c:\Windows\system32 (64 Bit) und c:\Windows\SysWOW64 (32 Bit), bei denen die jeweilige DLL drinliegt.

PS: Man beachte vor allem die äußerst sinnvolle Benennung der Verzeichnisse unter Windows 64 Bit. Was MS da geraucht hat, möchte ich mal wissen.
WOW64 bedeutet ja Windows On Windows 64. Also das 32-bit System. Den eigentlichen System32 Ordner hätte sie natürlich besser benennen können, das stimmt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    

 

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 19:26 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