Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Reverse Engineering der NLT II
Basiert das BrightEyes-Wiki eigentlich auf MediaWiki oder DokuWiki?
"Save early and save often!" - Speichere oft und speichere früh! - Ist eine alte Zockerweisheit.
Zitieren
MediaWiki.
Zum NLT-Wiki: http://nlt-wiki.crystals-dsa-foren.de/doku.php , Zum Drakensang-Wiki: http://drakensang-wiki.crystals-dsa-foren.de/doku.php
KEIN SUPPORT per E-Mail, PN, IRC, ICQ! Lest die Regeln und benutzt das Forum für sämtliche Anfragen! KEINE persönliche Betreuung!
Zitieren
Jap, genau. MediaWiki. Ich hatte mal eine Umwandlung angedacht, es aber letztlich nicht durchgezogen. Die Abschaltung ist jederzeit wieder umkehrbar, ich habe es nur gemacht, weil das Interesse im Moment kaum vorhanden ist und ich im Moment keine Zeit / keinen Nerv habe, um mich um das Monster "MediaWiki" zu kümmern.

Hab schon mit Wordpress genug zu kämpfen. Würde da gerne umsteigen auf Flat-File-Content-Management-System wie Bludit. Aber inzwischen gibt es dann doch zu viele Verlinkungen im Web....
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
Hier haben ein paar Leute Super Mario 64 aus dekompilierten Assembly wieder den originalen Sourcecode zusammengesetzt:

  https://gbatemp.net/threads/super-mario-...ed.542918/

Vom Vorgehen ziemlich ähnlich zum Reverse Engineering (halt ohne Dosbox als Hilfe). Da hab ich mich gerade gefragt, wie denn
hier der aktuelle Stand ist des Projekts? Meine letzte Info war, dass im Prinzip Binärkompatibilität erreicht wurde?
Zitieren
Wenn man nach dem Plan von Henne geht, sind wir quasi fertig mit der "Phase 2": https://www.crystals-dsa-foren.de/showth...#pid151277 Das bedeutet: Wenn wir den Code mit dem Original-Compiler von damals kompilieren, kommt eine Binary raus, die sich nur unwesentlich von der Original-Binary unterscheidet. Streng genommen gibt es noch 5 Funktionen, die sich in einzelnen Bytes vom Originalcode unterscheiden: https://www.crystals-dsa-foren.de/showth...#pid151240 Außerdem ist die resultierende EXE-Datei nicht richtig gelinkt. Ich kenne mich mit solchem Linker-Gedöns nicht aus und weiß nicht, wie trivial hier die Änderungen sein müssten, kann mir aber nicht vorstellen, dass das allzu aufwendig ist. Wir sind also an einem ähnlichen Punkt wie die SuperMario64-Community, vielleicht sogar etwas weiter, weil wir schon einen sehr großen Teil der Funktionen und Variablen mit sinnvollen Namen versehen konnten. Interessant wäre eigentlich auch, eine minimale Variante vom Original-Code zu haben, die mit modernen C-Compilern auf modernen Plattformen lauffähig wird. Und davon sind wir noch weit entfernt. Genauso wie von einer leicht modbaren Variante.
Zitieren
Wie war eigentlich der Weg, hin, zu einem Code-Stand mit kryptischen Methodennamen? Was musste man dafür tun?
"Save early and save often!" - Speichere oft und speichere früh! - Ist eine alte Zockerweisheit.
Zitieren
Als ich hier eingestiegen bin, war das Projekt schon enorm weit fortgeschritten. Wie alles begonnen hat, ist hier dokumentiert: https://chemnitzer.linux-tage.de/2011/vortraege/591 Es wurde also ein Disassembler benutzt, der bereits in der Lage war, C-Code zu generieren (IDA). Wenn ich das richtig verstehe, waren dann aber immer noch Anpassungen per Hand notwendig. Dieser Quellcode wurde zunächst (für einzelne Funktionen) in DosBox "reinkompiliert". Irgendwann hatte man aber auch die Originalversion des ursprünglich benutzten Borland-C++-Compilers aufgetrieben und konnte dann auch Compiler-spezifische Assembler-Optimierungen so berücksichtigen, dass auch wirkliche Binärkompatibilität für einzelne Funktionen erreicht wurde.

Bis heute sind noch in 5 Funktionen Compiler-spezifische Abweichungen im Assembler zu erkennen. Ich hab da schonmal reingeschaut und es geht da wirklich darum, dass der Compiler irgendwelche Codeabschnitte äquivalent umsortiert, aber eben nicht so äquivalent, wie das in der Originalversion war. Ich kam mit meinen bescheidenen C-Kenntnissen nicht dahinter, was der Compiler da genau tut und wie man den C-Code umstellen müsste, damit er das richtige Ergebnis ausspuckt.

EDIT: Hier sind die IDA-Dateien, in die wohl auch über die Jahre Dinge reinkommentiert wurden: https://github.com/Henne/BrightEyes-reveng
Zitieren
Henne hat sich leider seit 2 Jahre nicht gemeldet, daher erwarte ich momentan keine weitere Entwicklung von seiner Seite.
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
Juhu!! https://github.com/Henne/Bright-Eyes/iss...-513164365
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Zitieren
Er lebt noch :) 

Aber hatte er nicht gesagt, dass ihn das RL extrem im Griff hat und demnach keine Zeit für NLT ist?

(Übrigens auch mein Problem)
Shihans Erzählungen - Geschichten aus der Welt der Phantasie

Neues Foren-Theme mit dunkler Schrift auf hellem Hintergrund (nur Firefox):
userContent.css (mit Anleitung zum Einbinden)
Zitieren




Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste