Das ist jetzt eine eher etwas ungewöhnliche Frage, aber vielleicht kann mir hier jemand helfen. Ich soll für eine Kollegin ein kleines Programm ans laufen bekommen, wovon sie mehrere Versionen sowohl des Quelltextes als auch eine vorkompilierte Datei bekommen hat. Der Author selbst wußte nur noch, dass man wahrscheinlich eine bestimmte Pfadstruktur einhalten muss. Da er das Programm vor einigen Jahren geschrieben hat, kann er sich an keine Details mehr erinnern. Daher hat er einfach alles geschickt, was er so gefunden hat.
Das Programm ist in Visual Basic 6 geschrieben. Ich finde keinen kostenlosen Compiler, der den alten Quelltext noch kompilieren kann, also muss die vorkompilierte Datei herangezogen werden. Diese funktioniert jedoch nicht, und ich bin mir nahezu zu 100% sicher woran es liegt - kanns aber nicht so einfach beheben. Beim Programmstart kommt der Fehler "Runtime Error 76: Path not found".
Ich habe es auf 3 verschiedenen Rechnern unter
-Windows 98SE
-Windows XP SP3
-Windows Vista
-Debian Etch mit Wine
probiert mit jedesmal effektiv das gleiche Resultat.
Aus dem vorhandenen Quelltext kann ich lesen, dass eine Datei (die ist auch vorhanden) geladen wird, von der ist jedoch der Pfad hardgecoded im Quellcode. In zwei verschiedenen Versionen habe ich zwei unterschiedliche Pfade gefunden. Leider hat die kompilierte Datei wohl eine dritte Möglichkeit. Das ist zumindest meine Vermutung für den obigen Fehler, da ich die Datei in die beiden Verzeichnisse plus mögliche Varianten gelegt habe. Ich habe zwar einen kostenlosen Decompiler für Visual Basic gefunden (ich will ja nur den blöden Pfad auslesen, habe ja sogar legal den Quellcode leider nur eine falsche Version), der konstruiert jedoch nicht die Subroutinen in der dieser Pfad drinsteht. Das macht dann nur die Version, die kostet. Kann man zufälligerweise irgendwie protokollieren auf welches Verzeichnis, selbst wenn es nicht existiert, ein Programm zugreifen will?
Offene Dateien kann ich mir ja mit "lsof" anzeigen lassen, aber für so einen Fall hab ich leider nichts gefunden. Vielleicht hab ich aber auch nur nicht die richtigen Suchwörter benutzt.
Vielen Dank
*edit*
Titel leicht geändert (eines -> vom), da das sonst mit dem gelöst Tag nicht gepasst hätte.
[gelöst] Versuchte Dateizugriffe vom Programm protokollieen
[gelöst] Versuchte Dateizugriffe vom Programm protokollieen
Zuletzt geändert von Tutti am 15.01.2009 20:10:24, insgesamt 1-mal geändert.
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: Versuchte Dateizugriffe eines Programm protokollieren
Kann man zufälligerweise irgendwie protokollieren auf welches Verzeichnis, selbst wenn es nicht existiert, ein Programm zugreifen will?
![Debian](/pics/debianpackage.png)
Code: Alles auswählen
strace -o LOGDATEI -ff wine Programm.exe
Re: Versuchte Dateizugriffe eines Programm protokollieren
Danke für den Tipp, das werde ich mal testen.Spasswolf hat geschrieben:Kann man zufälligerweise irgendwie protokollieren auf welches Verzeichnis, selbst wenn es nicht existiert, ein Programm zugreifen will?strace kann das ,wobei ich nicht genau weiß wie man das mit wine benutzt, eventuell so
Code: Alles auswählen
strace -o LOGDATEI -ff wine Programm.exe
Das habe ich schon versucht, vergessen zu erwähnen sorry. Leider ist dieser Link nicht als Klartext zu sehen. Ich nehme an es liegt daran, dass er in einer Prozedur / Sub Routine (oder wie das bei VB heißt), aufgerufen wird.Spasswolf hat geschrieben: Edit: Oder du guckst dir mit einem Hexeditor das kompilierte Programm an.
Re: Versuchte Dateizugriffe eines Programm protokollieren
Jap sehr geil, EXAKT dieser Befehl war es. Bin eben nach Hause gekommen und konnte es probieren. Das hat zwar 17 Log Dateien mit ingesamt 6.1 MB erstellt (geil für 2sec Programm Lauf und Exit mit einer Fehlermeldung). Da ich aber weiß, wie die Datei heißt, konnte ich den Pfad sehr schnell finden. Top Programm läuft sogar mit Wine perfekt.Spasswolf hat geschrieben:Kann man zufälligerweise irgendwie protokollieren auf welches Verzeichnis, selbst wenn es nicht existiert, ein Programm zugreifen will?strace kann das ,wobei ich nicht genau weiß wie man das mit wine benutzt, eventuell so
Code: Alles auswählen
strace -o LOGDATEI -ff wine Programm.exe
Vielen Dank!