DLLs lesen

  • #1
W

wowische

Guest
Hallo, liebe WinTotalerInnen! :)

Ich habe lange gebraucht, mich zu überwinden, dies zu fragen, aber nun ist es soweit:

Was muss ich tun, um eine DLL lesen zu können?

Wenn ich mir so eine Programm-Bibliothek mittels QuickViewPlus ansehe, verstehe ich nur Bahnhof.

Welches Programm, welches Tool muss ich mir also zulegen, um DLLs lesen zu können? (Oder gar um sie zu bearbeiten?)

Oder ist die Darstellung einer DLL von z.B. QuickViewPlus richtig und ich muss eben lernen, wie das Durcheinander entziffert wird?

Dies sieht etwa so aus:

>>

DYNAMIC LINK LIBRARY
32-Bit für Windows 95 und Windows NT

Technische Dateiinformationen:

Bild-Datei-Header

Signatur:00004550
Maschine:Intel 386
Anzahl Abschnitte:0004
Zeit- und Datumsangabe:3b7e5684
Symbol-Zeiger:00000000
Anzahl Symbole:00000000
Größe des optionalen Headers00e0
Kenndaten:Die Datei ist ausführbar (d. h. keine unaufgelösten externen Referenzen).
Die Zeilennummern wurden aus der Datei entfernt.
Lokale Symbole wurden aus der Datei entfernt.
32-Bit-Textverarbeitungsmaschine.
Die Datei ist eine DLL-Datei.



Bild mit optionalem Header

Dateitypanzeiger:010b
Verbindungseditor Version:7.00
Größe des Codes:00009a00
Größe der initialisierten Daten:00003c00
Größe der uninitialisierten Daten:00000000
Adresse des Eingangspunkts:000092c5
Codebasis:00001000
Datenbasis:0000b000
Bildbasis:715c0000
Ausrichtung des Abschnitts:00001000
Ausrichtung der Datei:00000200
Betriebssystem Version:5.01
Bildversion:5.01
Subsystemversion:4.10
Reserved1:00000000
Größe des Bildes:00010000
Größe des Headers:00000400
Kontrollsumme:000180ca
Subsystem:Das Bild wird im Windows-Zeichen-Subsystem verarbeitet.
DLL-Kenndaten:0000
Größe des freien Stapelspeichers:00040000
Größe des zugewiesenen Stapelspeichers:00001000
Größe des freien Speicherbereichs für dynamische Variablen:00100000
Größe des zugewiesenen Speicherbereichs für dynamische Variablen:00001000
Ladeprogramm-Flags:00000000
Größe des Datenverzeichnisses:00000010
Virtuelle Adresse des Export-Verzeichnisses: 0000a210
Größe des Export-Verzeichnisses: 0000073c
Virtuelle Adresse des Import-Verzeichnisses: 00009730
Größe des Import-Verzeichnisses: 0000008c
Ressourcen-Verzeichnis
Virtuelle Adresse: 0000e000
Größe des Ressourcen-Verzeichnisses: 000003c8
Tabelle für Basisadressverschiebung
Virtuelle Adresse: 0000f000
Größe der Tabelle für Basisadressverschiebung: 00000a5c
Virtuelle Adresse des Debug-Verzeichnisses: 000011e0
Größe des Debug-Verzeichnisses: 0000001c



Export-Tabelle

Name:NULL.dll
Kenndaten:00000000
Zeit- und Datumsangabe:3b7d7b54
Version:0.00
Basis:00000001
Anzahl Funktionen:0000003e
Anzahl Namen:0000003e

OrdinalzahlEingangspunktName
00000000922cGetHookAPIs
000300007cb8LuaCopyFileW
0004000091f5LuaCreateDirectoryW
00050000326eLuaCreateFileW
000600003441LuaDeleteFileW
00070000312cLuaFSInit
0008000033baLuaGetFileAttributesW
000900003d76LuaGetPrivateProfileIntW
000a00003366LuaGetPrivateProfileSectionNamesW
000b0000397fLuaGetPrivateProfileSectionW
000c000039efLuaGetPrivateProfileStringW
000d0000385eLuaGetPrivateProfileStructW
000e0000372eLuaGetTempFileNameW
000f00003a5cLuaMoveFileW
001000003629LuaRegCloseKey
00110000356fLuaRegCreateKeyExW
001200005f95LuaRegCreateKeyW
001300006819LuaRegDeleteKeyW
0014000067d8LuaRegEnumKeyExW
001500005fc2LuaRegEnumKeyW
001600005f53LuaRegEnumValueW
001700005f16LuaRegOpenKeyExW
001800005ed4LuaRegOpenKeyW
00190000679aLuaRegQueryValueExW
001a0000675aLuaRegQueryValueW
001b00005e56LuaRegSetValueExW
001c00006895LuaRegSetValueW
001d00006949LuaRemoveDirectoryW
001e00006907LuaSetFileAttributesW
001f000035a2LuaShouldApplyShim
0020000034c8LuaWritePrivateProfileSectionW
002100001c0aLuaWritePrivateProfileStringW
0022000038ceLuaWritePrivateProfileStructW
0023000037a4LuacCreateFileW
002400003acfLuacDeleteFileW
002500007351LuacFSCleanup
0026000073e9LuacFSInit
002700007257LuacFindFirstFileW
0028000074bfLuacGetFileAttributesW
002900007263LuacRegCleanup
002a000072ddLuacRegCloseKey
002b00007b1fLuacRegDeleteKeyW
002c000079fdLuacRegEnumKeyExW
002d00007a58LuacRegEnumKeyW
002e000078f2LuacRegInit
002f00007dceLuacRegOpenKeyExW
000100007b0fLuacRegOpenKeyW
003000007bdfLuacRemoveDirectoryW
003100007454LuatCopyFileW
003200008526LuatCreateDirectoryW
00330000853cLuatCreateFileW
0034000084feLuatDeleteFileW
003500008579LuatFSCleanup
003600008281LuatFSInit
003700008774LuatGetTempFileNameW
0038000085ccLuatMoveFileW
00390000858fLuatRemoveDirectoryW
003a000085b6LuatSetFileAttributesW
003b00008552LuatWritePrivateProfileSectionW
003c0000862cLuatWritePrivateProfileStringW
003d000085ebLuatWritePrivateProfileStructW
00020000866aNotifyShims

... <<

Dies ist nur ein Teil der DLL, und so sehen mit QuickViewPlus eigentlich alle aus - hier und da mit kleinen und großen Unterschieden, aber im Großen und Ganzen ähnlich.

Wer kann mir helfen? Ich blick' da einfach nicht durch... ???

Viele Grüße
Wolfgang
 
  • #2
Hallo zurück,

das ist jetzt etwas aufwendiger zu erklären. Eine DLL an sich ist erstmal eine fertig compilierte Funktionsbibliothek. Insofern ist es schwierig diese einfach so mit einem Tool zu öffnen und zu bearbeiten (wäre in vielen Fällen auch nicht empfehlenswert).
Hierzu benötigt man den zugrundeliegenden Source-Code und je nach Entwicklungssprache auch die entsprechenden Entwicklungssysteme (z.B. VB6 oder VC6).

Beim lesen dieser Bibliothek bekommt man meist auch nicht mehr zu sehen, als das was Du bekommen hast, nämlich eine Auflistung der in der DLL enthaltenen Funktionsnamen.

Normalerweise braucht man jedoch eine Beschreibung was sich in den DLL's befindet und wie sie zu nutzen ist, da eine DLL entweder eine reine Funktionsbibliothek ist, oder sogenannte COM-Komponenten beinhalten (das sind im Groben gesagt (nicht schlagen ich weiß das es stark vereinfacht ist) eigenständige Komponenten die man->einfach' in sein Programm einbinden kann um z.B. Excel Funktionalität, oder die anderer Systeme->mit'-zu nutzen)

Beispiele hierzu kannst Du finden wenn Du Dir mal sample-code über die Verwendung von DLL's der Windows API ansiehst, z.B. unter


Die Verwendung von COM-Komponenten ist etwas komplexer zu erklären, wenn Du aber Fragen diesbezüglich hast, kannst Du mich auch einfach anmailen.

Ich hoffe ich hab Dich jetzt nicht vollständig :eek: :eek: :eek: und verschwinde mal wieder im Hintergrund.

Der Vokalakrobat
:)
 
  • #3
Herzlichen Dank für deine hervorragenden Erläuterungen! :)

Ich habs so einigermaßen kapiert und nun nur noch eine Frage:

Du schreibst: Normalerweise braucht man jedoch eine Beschreibung was sich in den DLL's befindet und wie sie zu nutzen ist.

Was ist eine solche Beschreibung und wie komme ich da->ran?
Ich habe übrigens nicht die Absicht, die DLLs zu bearbeiten. Ich will sie einfach lesen können - verstehen, was das Kauderwelsch darin bedeutet.
Erklärt eine solche Beschreibung die Bedeutung der in den DLLs enthaltenen Funktionsnamen?

Wenn ich deine Ausführungen richtig verstehe, bräuchte ich also die Originalsprache (den Source-Code), in der die DLLs geschrieben sind, und ggf. eben auch noch die Entwicklungssysteme - meines Erachtens ein ziemlich großer Aufwand, oder?!

Leider ist alles unter der URL in Englisch - da bräuchte ich mit Hilfe des Babylon-Translators auch für nur einen Absatz eine Stunde! - Und wüsste dann immer noch nicht, ob ich's richtig übersetzt habe.

Vielleicht sollte ich, bevor ich mich mit DLLs befasse, Englisch und Fachenglisch lernen... ::)

Nochmals herzlichen Dank und viele Grüße

Wolfgang
 
  • #4
ich weis ja nicht wie weit du mit linux zurecht kommst, ich schlags dir aber einfach mal vor: installier dir linux, dort kannst du dann anhand der shared object (sind vergleichbar den dll´s) die programmiertechniken und die vorgehensweisen beim entwickeln von bibliotheken näherbringen, da ja dei ganzen teile im sourcecode vorliegen, bei ms produkten und bei ms selber wirst du dich schwer tun an originalsourcecode von dll´s zu kommen, es sei denn du gehörst zum elitären zirkel der windowsdevelopper, davon gehe ich mal aber nicht aus.

greetz

hugo
 
  • #5
Neben der Variante sich unter Linux mit der Philosophie von geshareten Funktionen vertraut zu machen, besteht immer die Möglichkeit zu versuchen manche DLL's durch einfaches suchen im Internet erläutert zu bekommen. Ist aber nur ein Versuch weil ab und an liegts nicht im Interesse des Verfassers seine DLL, inkl. Funktionsbeschreibungen freizugeben. Selbst Microsoft hält seine WinAPI Beschreibung gerne etwas unvollständig.
Angeblich kann ein normaler Programmierer mit den nicht beschriebenen Funktionen eh nicht umgehen .. sagte man mal zu mir ;)

Hast Du eigentlich eine bestimme DLL im Auge oder ist es allgemein gefragt ?

Für die Analyse von COM-Dlls gibt es ein wunderschönes Tool mit Sourcen von SteveMcMahon .. leider auch alles auf englisch.

Gruß das Sängerli
:D
 
  • #6
Vielen Dank für eure Antworten!
Jetzt bin ich tatsächlich im Bilde! 8)

@hp:
Ich kenne nichts außer Windows!
Trotzdem will ich - irgend wann einmal - auch andere Betriebssysteme ausprobieren; auch Linux.
Aber momentan hab' ich zuviel andere Dinge im Kopf, um dies in Angriff zu nehmen.
Aber vielen Dank für die Idee; ich werd' sie mir notieren und bei Gelegenheit darauf zurück kommen! :)

@derSaenger :
Nein, ich hatte keine bestimmte DLL im Sinn, sondern fragte nur ganz allgemein - aus reiner Neugierde.
Ich hatte im Oktober 1998 meinen ersten PC gekauft, habe mir nach und nach mittels verschiedener Fachlektüre und ebensolchen Programmen so einiges an Hardware-, Software- und Internet-Wissen selbst beigebracht und auf diese erkleckliche Art und Weise ein gefährliches Halbwissen angesammelt.
...Soll heißen, immer wenn ich mich mehr als nötig in die Materie vertiefe, fehlt ein bisschen (oder auch ein bisschen mehr) zum Verständnis.
Die Frage nach den DLLs quält mich schon lange. Doch jetzt bin ich zumindest einigermaßen zufrieden, auch wenn ich die Dinger immer noch nicht lesen kann. Denn: Es liegt in diesem Falle nicht an meinem gefährlichen Halbwissen! ;D

Also - vielen Dank nochmals, und -
bis zur nächsten Frage! ;)

Grüße
Wolfgang
 
Thema:

DLLs lesen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.966
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben