"We are back" « oc.at

.dll reparieren

Balu 17.11.2005 - 15:02 4039 9
Posts

Balu

BBQ
Avatar
Registered: Sep 2004
Location: Bgld
Posts: 767
Hallo!

Könnt mir wer helfen?

Wie repariert man .dll Dateien? :bash:

Normalfall wär natürlich einfach neu aufsetzen,
ich hab aber zuviele wichtige Dateien drauf.

Ich würd beispielsweise mit der "twain.dll" anfangen.
Wie geh ich da vor?

Wenns geht ohne Hilfprogrammen.

mfg

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9823
sag zuerst mal was das problem ist und wo es auftritt. es gibt kein wundermittel um dlls zu reparieren - mit der funktionierenden version überschreiben ist die einzige möglichkeit.

falls es um deine system dlls geht würd ich es mal die xp reparaturfunktion probieren.

mr.nice.

differential image maker
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6556
Also um eine DLL wirklich reparieren zu können, müsstest du sie erstmal in ihre ursprüngliche Form, den Quellcode, zurückformen, das wird "dekompilieren" genannt und ist bei Microsoft DLL's ansich schon fast ein Ding der Unmöglichkeit.

Anschließend müsstest du den C oder C++ Quellcode bearbeiten und den Fehler oder die Fehler im Programm finden und ausmerzen, was bei größeren Programmen eine Arbeit von Monaten sein kann :)

Dann müsstest du sie wieder kompilieren um ein lauffähiges Programm zu bekommen, denn DLL's sind eigentlich nichts anderes als lauter kleine Programme, viele ineinander verzahnte Module die dem Windows-Moloch Leben einhauchen.

Ich kann mir nicht vorstellen dass du dir das antun willst ;) , versuch's lieber erstmal mit der Systemwiederherstellung, falls das nicht klappt nimm einen anderen Windows-PC aus deinem Umfeld, mit der gleichen Windows Version drauf, zur Hilfe.
Such' dort nach den Dateien die bei dir beschädigt sind und kopiere sie auf eine Diskette oder CD. Mit diesen Dateien überschreibst du dann deine Defekten, mit etwas Glück funktioniert dann dein Windows wieder.

Andernfalls musst du neu installieren.

Balu

BBQ
Avatar
Registered: Sep 2004
Location: Bgld
Posts: 767
Es geht mir mehr um die Theorie zum Thema ".dll's" zu reparieren. Wie ist das möglich?

Bis jetzt hab ich eben die Möglichkeit gekannt, im Web fehlerhafte .dlls herunterzuladen und eben ersetzen.
Oder eben mit CD Wiederherstellen.

Da gibts ja noch mehr Möglichkeiten dafür, oder?

Wo find ich im Web inhaltreiche Seiten zu Systemdateien ala .dll ? Bitte sagt nicht google, das durchforste ich e schon länger... darum auch die Frage hier im Forum.


//EDIT: Sehr schön mr.nice! Genausolche Antworten hab ich mir erwartet. jetzt kann ich auch nach andren Fachbegriffen suchen.

Es geht eben um die Theorie .dlls zu reparieren.

TIA

mr.nice.

differential image maker
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6556
Um eine DLL reparieren zu können muss man wissen was eine DLL ist, in den meisten Fällen ein in C++ geschriebenes Programm, bzw. ein Modul, das auf noch (viele) andere Module zugreift, um überhaupt etwas leisten zu können.
Windows nennt es eine Bibliotheksdatei, nicht ohne Grund, es gibt afaik mehrere Tausend Querverbindungen in den DLL's, auf die Windows angewiesen ist.
Selbst das Programmierteam von Microsoft hat eine eigene "Landkarte" dafür entwickelt, weil sich sonst kein Mensch mehr damit auskennen würde.
Außerdem verwendet Microsoft viele Mannstunden nur dafür, es möglichst schwer zu machen Einblick in den Quellcode zu bekommen (code obstruction), indem sie quasi solange im Code umrühren, dass es zwar noch läuft, aber keiner mehr draufkommt wie er ursprünglich ausgesehen hat.
Das dekompilieren, modifizieren und rekompilieren von Windows DLL's ist mit entsprechendem Zeitaufwand ansich möglich, bedarf nur einem motivierten Hackerteam mit entsprechenden Kentnissen.

DLL's unterscheiden sich afaik nicht wirklich von Executables (EXE), nur zum Starten einer DLL benötigt man die rundll32.exe, während die EXE Datei ein selbstausführendes Programm ist.

Andere Ansätze wären hexadezimales oder binäres Modifizieren von DLL's (assembly hacks), da man in der hex- bzw. binären Ansicht aber keinerlei Hinweise bekommt was mit wem, wie verknüpft ist, erscheint mir diese Möglichkeit bei einem Giganten wie Windows aber sehr unrealistisch.
Außerdem ist Assambler und das damit verbundene Arbeiten im Speicher vom PC selbst mit nur einer handvoll von Befehlen eine wahre Kunst, die ein unvorstellbares Maß an Abstraktionsvermögen verlangt, vor allem wenn man nicht seinen eigenen Code bearbeitet.
Bearbeitet von mr.nice. am 17.11.2005, 16:26

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von Balu
Es geht eben um die Theorie .dlls zu reparieren.

DLLs werden nicht repariert.

Wenn sie nicht mehr die Bits enthalten, die sie enthalten sollten, dann muss man sie durch eine intakte Version ersetzen.

Wenn das Programm, das die DLL verwendet, nicht funktioniert, dann liegt das entweder an einem Softwarefehler, oder an einer Kombination nicht zusammenpassender DLLs bzw. DLL-Versionen.

DLL-Abhängigkeiten kann man mit folgenden Tools finden:
- depends.exe von Microsoft (statisch)
- procexp.exe von Sysinternals (dynamisch)

Balu

BBQ
Avatar
Registered: Sep 2004
Location: Bgld
Posts: 767
sind eigentlich alle .dlls im betriebssystem systemdateien?

und von was hängen die .dlls ab? Hat WinXP die selben .dlls wie Win2000, Win98 oder Linux ? Kann ich mir nicht vorstellen...

btw. bei google find ich wirklich _nur_ crap zum Thema .dlls, kann mir wer Seiten empfehlen, wo ich Theorie finden kann? Wo meine einfachsten Fragen beantwortet werden... Definition von .dll, Wozu .dlls? ..... einfach Theorie zum Thema Systemdateien und eben insbesondere für .dlls.

big TIA,
mfg

kNbbL

BMW-Prolet
Avatar
Registered: Feb 2005
Location: .de
Posts: 1511

Gulinborsti

Addicted
Avatar
Registered: Mar 2004
Location: Wien
Posts: 469
Ich kanns probieren, ist aber vielleicht etwas OT ;):

Eine DLL (Dynamic Link Library) stellt anderen Programmen Objekte und Funktionen zur Verfügung. Damit macht grundlegende Funktionen für alle Programme gleichermassen verfügbar (und erleichtert die Wartung).

Zum Beispiel: winsock.dll

Diese Library stellt das Socketobject, über das Windows TCP Verbindungen aufbaut, zur Verfügung. Alle Programme, die TCP Verbindungen benötigen (IE, Mailclient, etc.) instanzieren ein Socketobject aus dieser dll. Dieses stellt dann die grundlegenden Funktionen für eine TCP Verbindung zur Verfügung.
Sollte nun ein Feher in diesem Object/dieser Library gefunden werden, kann durch Austausch dieser einen Datei der Fehler behoben werden, ohne das alle Programme geändert oder neu geschrieben werden müssen.

Deswegen sind beschädigte .dlls oft ein großes Problem, weil dann alle Programme, welche die Objekte aus dieser Library verwenden, gleichzeitig betroffen sind; in meinem Beispiel würde der Rechner keine TCP Verbindungen mehr aufbauen können - keine Netzwerk, kein Internet, nada

Das sollte zumindest ein Grundverständins ermöglichen....

EDIT:

Zitat von kNbbL
http://de.wikipedia.org/wiki/Dynamic_Link_Library

Wie wärs damit?
Humpf, zu langsam. 0:1 für kNbbL :D
Bearbeitet von Gulinborsti am 22.11.2005, 18:27

Balu

BBQ
Avatar
Registered: Sep 2004
Location: Bgld
Posts: 767
vielen dank für die spitzen links!

hab mich viel zu wenig mit dem thema beschäftigt, jetzt hab ich mehr suchbegriffe.

klingt jetzt blöd, is aber ein unterpunkt in meiner facharbeit,... habs mir nicht selbst ausgesucht :D

aber nicht schlecht zu wissen.

THX, besonders euch beiden!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz