Programm startet nicht auf AMD Prozessoren (aber auf Intel)

grabeskuehle

Cadet 4th Year
Registriert
Okt. 2014
Beiträge
127
Ich habe hier ein etwas unkonventionelles Problem, das ich so noch nie erlebt habe.
Da die Software um die es geht nicht so wirklich in eine der anderen Software Kategorien passt und sich vermutlich jemand mit Programmiererfahrung am ehesten einen Reim darauf machen kann, poste ich es hier.

Also es geht um die Software Texture Maker aus dem Jahre 2006, eine Software die, wie der Name impliziert, alle möglichen Tools zum erstellen generieter Texturen für Spiele bietet die ich so und in diesem Umfang in noch keiner anderen vergleichbaren Software gefunden habe.

Dieses programm will sich auf meinem Ryzen System nicht starten lassen, wie im Threadtitel angedeutet.
Ich habe schon verschiedenstes Versucht, wie die Software in einer VM auszuführen oder unter Wine, in Linux, da ich zunächst dachte ich hätte es vielleicht mit einem betriebssystemspezifischen Problem wie fehlenden Libaries zu tun.

Da ich die Software in Folge mit Freunden auf verschiedenen Systemen getestet haben, sind wir darauf gestoßen das die Software sich auf Intel Systemen starten lässt, auf AMD Systemen allerdings nicht - egal ob in Wine oder Windows.
Auf Intel Seite hat es sich um 2x i5 und ein i7 System gehandelt, bei AMD um 1x Ryzen, 1x Threadripper und 1x A8.

Die Windows Ereignisanzeige gibt mir auf meinem Ryzen PC die Ausnahmecodes 0xc0000005 und 0xc0000409,
in einer Linux VM mit Wine gibt mir die Fehlerdiagnose auf dem gleichen System setup_exception_record stack overflow 976 bytes in thread 0009 eip 7bc47cb6 esp 00930f60 stack 0x930000-0x931000-0xd30000

Hat jemand hier eine Idee was dieses Verhalten verursachen könnte und wie man das Fixen könnte?

Mit besten Grüßen,
grabe
 
Es gab schon in der Vergangenheit Programme, die nicht oder nur deutlich langsamer auf AMD liefen, oft war da der Intel Compiler daran schuld, der von Intel genau dafür programmiert wurde. Es gibt Möglichkeiten, dem Programm vorzugaukeln,dass eine intel CPU verwendet wird. Einfach mal googeln.
 
Zuerst mal würde ich in Raum werfen, das es unter Intel noch läuft, dabei mehr dem Glück haben geschuldet ist, als das es da völlig Kompatibilität gibt. Weil hier von ner Software die Rede ist wo für XP und Win7 in Bezug auf Windows erschienen ist, 2007 wohl die letzte Aktualisierung war und zu guter letzt die Seite des Herstellers http://www.i-tex.de/news.php auch inzwischen nichts mehr hergibt außer ne Fehlermeldung. Und https hier auch Fehlanzeige ist.
 
Da bist du ja nicht der einzige mit dem Problem, wenn man mal auf google schaut.
Leider hab ich in meiner kurzen Recherche dort auch keinerlei Lösungen gefunden.

Vlt meldest du dich einfach mal beim Entwickler (Tobias Reichert)?
 
Welches WIndows?
Welche VM-Software?
Unter Windows die Kompatibilitätsmodi alle ausprobiert?
Ist die Software closed source?
 
  • Gefällt mir
Reaktionen: grabeskuehle
Phrasendreher schrieb:
Welches WIndows?
Welche VM-Software?
Unter Windows die Kompatibilitätsmodi alle ausprobiert?
Ist die Software closed source?
1.: Windows 10, Version 21H2

2.: Oracle VirtualBox, Version 6.1.26 r145957

3.: Ja.

4.: Ja, leider. Man könnte die Software wohl als Abandonware bezeichnen.
 
Dann +1 an den Entwickler wenden, klingt als würde zumindest auf der zwischenmenschlichen Ebene keine Sprachbarriere dagegen sprechen.
 
  • Gefällt mir
Reaktionen: grabeskuehle
korsakoff schrieb:
Vlt meldest du dich einfach mal beim Entwickler (Tobias Reichert)?

Phrasendreher schrieb:
Dann +1 an den Entwickler wenden, klingt als würde zumindest auf der zwischenmenschlichen Ebene keine Sprachbarriere dagegen sprechen.

Ist eine Idee, vielleicht wäre er ja bereit den Sourcecode freizugeben, falls er ihn noch hat.
Allerdings funktioniert die support Emailadresse anscheinend nicht mehr, und eine aktuelle von Herrn Reichert zu finden ist mir noch nicht gelungen.
Es scheint auf jeden Fall mehrere Softwareingeneure mit dem Namen zu geben.

Es interessiert mich aber auch unabhängig davon dem Problem auf den Grund zu gehen, kann man schließlich was lernen dabei.

Edit: Hab jetzt erst durch zufall diesen Thread gefunden, wo das gleiche Problem mit der gleichen Software geschildert wird:
https://forum.planet3dnow.de/index....m-auf-dem-fx-8150-testen.406326/#post-4638025

Das Problem scheint seit AMD's K10 Architektur zu bestehen, auf K8 gings noch.
Kann ich auch bestätigen, kann mich erinnern es in der Zeit um 2006 auf einem Athlon XP verwendet zu haben.
Leider haben die dort auch keine Lösung gefunden :(
 
Zuletzt bearbeitet:
niteaholic schrieb:
Programm alternativen gibts keine?
Ich kenn zumindest keine alternative, die alles könnte was der TextureMaker kann.
Abgesehen vom reinen Generieren von Texturen stecken da sehr viele zusätzliche Features drin:
1.: Textur resampler
2.: Textur extraktor
2.: Rendern von animierten natlosen Texturen (z.B. für Kaustik)
3.: Rendern von Partikeleffekten als animierte Textur
4.: Ein Skybox Renderer ähnlich Terragen 1
5.: Backen von Shading in eine Textur
etc. etc. etc.

Einzelne Sachen könnte man auch mit anderer Software machen, aber gerade für das Rendern von animierten natlosen Texturen kenne ich keine Alternative.
 
grabeskuehle schrieb:
Dieses programm will sich auf meinem Ryzen System nicht starten lassen, wie im Threadtitel angedeutet.
Ich habe schon verschiedenstes Versucht, wie die Software in einer VM auszuführen
Also unter der Annahme das es tatsächlich an der CPU liegt:
Dann würde ich keine VM nehmen sondern eher eine Emulation a-la QEMU (also plain QEMU ohne Virtualisierungserweiterung wie KVM) oder bochs.
Alternativ hilft es evtl. wenn Du es auf AMD-Rechnern unter einem 32-Bit-Windows ausführen lässt, da sich die CPU im reinen 32-Bit-Mode dort anders verhält als im 32-Bit-Compatibiliy-Mode des Long-Modes.
 
Der könnte es gut sein:

https://www.xing.com/profile/Tobias_Reichert7

Stadt passt, Alter passt, FH passt, die anderen waren zu jung. Wenn man nach dem Quellcode fragt, sollte man natürlich selbst programmieren können. =)

Edit: Die Locom Consulting wo er arbeitet gibt es nicht mehr, die ehemalige URL locom.com wird auf https://www.siemens-digital-logistics.com/home weitergeleitet, so taufrisch scheint das Profil auch nicht mehr zu sein. Seltsamer Fall...
 
Zuletzt bearbeitet:
side note: das Programm (Delphi) sieht aus, als wäre es mit einem EXE-Packer wie ASPack 2.x gepackt (ich finde allerdings keine .aspack-Segment-Signatur in der Exe) ; es wird scheinbar komplett in memory entpackt und danach das entpackte Image aufgerufen. Es wird, jedenfalls sehe ich keine, ohne temporäre Datei ein neuer Prozess erzeugt. Vermutlich liegt dort das Problem?

1649579958824.png


(vgl. auch: https://forum.lazarus.freepascal.org/index.php?topic=9705.0)

Kannst ja mal probieren, das Programm selber zu entpacken: https://gist.github.com/abhisek/3659931
bzw.:
obwohl ich denke, dass es auch was was anderes als ASPack sein könnte.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: grabeskuehle
blöderidiot schrieb:
side note: das Programm (Delphi) sieht aus, als wäre es mit einem EXE-Packer wie ASPack 2.x gepackt (ich finde allerdings keine .aspack-Segment-Signatur in der Exe) ; es wird scheinbar komplett in memory entpackt und danach das entpackte Image aufgerufen. Es wird, jedenfalls sehe ich keine, ohne temporäre Datei ein neuer Prozess erzeugt. Vermutlich liegt dort das Problem?
Interessante Spur!
Das Programm scheint wirklich mit ASPack obfuskiert zu sein, Version 2.12 wie es aussieht:
aspack212.jpg

Spannend, ich bleibe an der Sache dran!

Edit: Das Entpacken ist gelungen, und das Programm verhält sich jetzt anders beim Starten.
Zumindest bekomme ich jetzt Fehlermeldungen, abwechselnd eine von diesen beiden:

tm_error_2.jpg
tm_error_1.jpg


Edit 2: Wie es aussieht muss ich scheinbar auch noch etwas namens IAT fixen nach dem entpacken.

Dabei stehe ich jetzt vor folgendem Problem:

tm_scylla.jpg


Hat da jemand vielleicht einen Tipp für mich? 😅
 
Zuletzt bearbeitet:
Die einzig realistische Lösung hier wird sein, endlich mal den Workflow aus tiefster Antike auf die aktuelle Zeit zu heben.
 
playerthreeone schrieb:
Die einzig realistische Lösung hier wird sein, endlich mal den Workflow aus tiefster Antike auf die aktuelle Zeit zu heben.
Da machst du es dir aber auch etwas einfach, playerthreeone ;)
Q: "Spiel xy läuft nicht." A: "Spiel halt was neues."
Es hat auch archivarische Gründe warum ich eine Lösung für diese Software finden möchte.

Na gut, kennst du denn ein Programm mit dem man animierte Texturen wie z.B. Wasser-Kaustik rendern kann, die sowohl auf den räumlichen als auch auf der zeitlichen Achse nahtlos sind?
 
Zuletzt bearbeitet:
Hattest Du in der "Scylla"-Software mal den Button "IAT Autosearch" ausprobiert? Btw, sieht interessant aus, ist das frei? Haste mal ne Adresse?
Irgendwie muss ich bei dem Problem an Address Space Layout Randomization denken - das ist aber mehr ein Schuss in's Blaue... geregelt wird das in Einstellungen, Windows-Sicherheit, Exploit-Schutz, "Zufällige Anordnung für Images erzwingen (obligatorische ASLR)" bzw. "Speicherbelegungen zufällig anordnen (ASLR)".
Vielleicht möchtest Du an der Stelle mal herumprobieren.
 
  • Gefällt mir
Reaktionen: andy_m4
Phrasendreher schrieb:
Hattest Du in der "Scylla"-Software mal den Button "IAT Autosearch" ausprobiert? Btw, sieht interessant aus, ist das frei? Haste mal ne Adresse?
Jepp, das ist was nach IAT Autosearch und GetImports rauskommt. Ansonsten wäre die Imports Liste leer.

Scylla ist ein Teil von x64dbg, ein open-source x64/x32 debugger: https://x64dbg.com/

Phrasendreher schrieb:
Irgendwie muss ich bei dem Problem an Address Space Layout Randomization denken
Hm, das erinnert mich wiederum an Obfuskation, könnte im weiteren Sinne eine Spur sein.

Was mir jetzt gerade aufgefallen ist, ich im debugger erst nachdem dem der TextureMaker sich bereits in den Ram entpackt hat einen 0xc0000005 Fehler bekomme, an dieser Stelle: mov dword ptr ds:[esi+8],ecx

tm_dbg1.jpg

Also wenn ich das richtig verstehe und das Register ECX eine Zieladresse beinhalten sollte, diese aber 00000000
lautet, verstehe ich zumindest die Speicherzugriffsverletzung.

Muss das noch auf einem Intel-System gegentesten.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Phrasendreher
Zur Zeit trete ich auf der Stelle, man Fachwissen über Assembler reicht vorne und hinten nicht aus.
Gibt es hier jemanden mit Disassembler-Debugging Erfahrung der weiterführende Tipps für mich hat?
@blöderidiot vielleicht?

Edit: Das Programm scheint zu checken ob ein AMD Prozessor verbaut ist:

tm_amd.jpg
tm_AMD2.jpg


_____________________________________________________________________________

Hier handelt es sich um die Stelle an der das Programm nach mehreren Durchläufen einer Schleife abstürzt:

tm_function_layout.jpg


Man beachte hier die cpuid instruktionen, die angesprochen werden wir hier beschrieben:
https://nixhacker.com/getting-processor-info-using-cpuid/

Ich weiß zwar noch nicht was ich jetzt machen muss, aber ich bin mir sicher ich bin auf einer heissen Spur!
 

Anhänge

  • tm_cpuid.jpg
    tm_cpuid.jpg
    97 KB · Aufrufe: 191
Zuletzt bearbeitet:
Zurück
Oben