Frage zu Erklärung in der AppDB von winehq

cabriofahrer

Well-Known Member
Seit längerer Zeit fällt mir auf, dass anscheinend keine älteren OpenGL-Spiele, wie Quake3, SoF, Quake2, etc. mehr unter wine funktionieren. Die Erklärung scheint sich hier zu finden:

https://appdb.winehq.org/objectManager.php?sClass=version&iId=585&iTestingId=61858

Wenn ich das richtig verstehe, kann ich die Datei ref_gl.dll im Spieleverzeichnis mit folgendem Befehl patche:

$ echo "909090909090" | xxd -r -p -seek 0x000f772 - ref_gl.dll

Wenn ich das mache, bekomme ich aber:

xxd: not found

Was mache ich hier falsch?
 
Danke, das war's. Habe ein 'pkg install vim' gemacht, den Befehl aus der Anleitung nochmal ausgeführt, ging und Spiel startet jetzt.
Kannst du mir vielleicht noch erklären, was dieser Befehl jetzt eigentlich genau gemacht hat und welche Rolle xxd, bzw. vim dabei spielt? Also ich nehme an, es ist irgendwie 909090909090 in eine bestimmte Stelle der Datei geschrieben worden?
 
Packt einfach die Daten die per echo als hex mit gibst an die entsprechende stelle im dll-file.

Guck einfach mal in die Manpage
 
909090909090 entspricht dabei ein paar NOPs. Da wird also etwas "deaktiviert". Zum Beispiel ein jmp ueberschrieben oder ein call. Da muesste man jetzt mal ins Binary gucken was an der Stelle 0x000f772 zu finden ist.

EDIT:
The easiest fix is to patch the ref_gl.dll file in your SoF directory. This patch disables the print statement that results in the buffer overflow (steht in der AppDB)
 
Back
Top