Ergebnis 1 bis 5 von 5

Anpassung Anno 1404 Warenrechners [MS Visual C++]

  1. #1 Zitieren
    General Avatar von Nobbi Habogs
    Registriert seit
    Nov 2010
    Beiträge
    3.975
    Hallo

    Einige kennen sicher Anno 1404 (Venedig) und den dazu passenden Warenrechner. Dazu gibt es vom Ersteller auch ein sehr kleines Programm um die einzelnen Schichten der Bevölkerung automatisch aus dem laufenden Spiel auszulesen, in den Zwischenspeicher zu kopieren, damit man im Warenrechner dann nur noch per Import einfügen muss.
    Ich besitze beide Versionen von Anno 1404, die alte 32 Bit Version und eben auch die History Edition in 64 Bit. Das Programm findet aber natürlich das Programm nicht, weil die Prüfsumme und das Programm natürlich letztendlich anders sind.

    Wäre es mit einigermaßen wenig Aufwand möglich, das Programm anzupassen um die Abfrage der Bevölkerung eben auf die neue 64-Bit-Anno1404Addon.exe anzuwenden?

    Laut PE Detective wird wohl mit Microsoft Visual C++ 2008 gearbeitet
    Mit einem korrupten Speicherstand ist nicht zu spaßen. Sicherheitshalber würde ich die beiden Slots über und unter dem korrupten besser auch frei lassen. Man weiß ja nie. - Matteo
    [Bild: downloadvpk5n.gif]
    Nobbi Habogs ist offline

  2. #2 Zitieren

    Metasyntaktische Variable
    Avatar von foobar
    Registriert seit
    Sep 2004
    Ort
    Direkt hinter dir! Buh!
    Beiträge
    24.067
    Hängt davon ab, wie das Programm intern arbeitet. Wenn es z.B. intern feste Speicheradressen ausliest, um an die Daten zu kommen, dann müssten die höchstwahrscheinlich für jede neue Version des Spiel wieder neu ermittelt und angepasst werden.

    Mein Tipp wäre, den Autor zu kontaktieren und auf das Problem aufmerksam zu machen. Vielleicht kann er es beheben oder dir wenigstens den Quellcode zur Verfügung stellen, damit du selbst dein Glück probieren kannst.

    Feeling a bit masochistic and want to read more of my diatribes? Check out Foobar's Rantpage.

    foobar erklärt die Welt der Informatik: Was ist ein Zeichensatz?Was ist die 32Bit-Grenze?Warum sind Speicheroptimierer Unsinn?Wie teste ich meinen RAM?Was ist HDR?Was ist Tesselation?Warum haben wir ein Urheberrecht?Partitionieren mit MBR oder GPT?Was hat es mit dem m.2-Format auf sich?Warum soll ich meine SSD nicht zum Anschlag befüllen?Wer hat an der MTU gedreht?UEFI oder BIOS Boot?Was muss man über Virenscanner wissen?Defragmentieren sinnvoll?Warum ist bei CCleaner & Co. Vorsicht angesagt?Was hat es mit 4Kn bei Festplatten auf sich?Was ist Bitrot?Was sind die historischen Hintergründe zur (nicht immer optimalen) Sicherheit von Windows?Wie kann ich Datenträger sicher löschen?Was muss ich bzgl. Smartphone-Sicherheit wissen?Warum sind Y-Kabel für USB oft keine gute Idee?Warum sind lange Passwörter besser als komplizierte?Wie funktionieren Tintenstrahldrucker-Düsen?Wie wähle ich eine Linux-Distribution für mich aus?Warum ist Linux sicherer als Windows?Sind statische Entladungen bei Elektronik wirklich ein Problem?Wie repariere ich meinen PC-Lüfter?Was ist die MBR-Lücke?Wie funktioniert eine Quarz-Uhr?Was macht der Init-Prozess unter Linux und wie schlimm ist SystemD?Mainboard-Batterie - wann wechseln?Smartphone ohne Google?
    foobar ist offline

  3. #3 Zitieren
    Legende Avatar von jabu
    Registriert seit
    Jul 2011
    Beiträge
    7.383
    Ich habe zwar kein Anno, aber das hat mich nicht davon abgehalten, mir mal etwas anzugucken.

    Für Prüfsummen interessiert sich die "Anno 1404 Venedig - Warenrechner - Client Ver. 0.4.2.exe" nicht. Wie das bei den anderen Versionen ist, weiß ich nicht (vermutlich ähnlich). Dem Programm genügt schon ein passender Fenstertitel. Ich habe es extra anhand eines schnell erstellten Dummys mit passendem Fenstertitel ausprobiert. Das Programm wurde einwandfrei gefunden. Das Lesen an den jeweiligen Stellen im Speicher schlug zwar erwartungsgemäß fehl, da im Gegensatz zum echten Anno dort kein Speicher der Anwendung zugewiesen ist, aber dann ging es (mit Nullen oder uninitialisierten Daten jeweils als Ergebnis, habe ich nicht weiter geprüft) trotzdem weiter, als wäre nichts gewesen. Der Rückgabewert von ReadProcessMemory wird anscheinend nicht geprüft.

    Die Adressen müssen bekannt sein (wie foobar sagte), sonst wird das normalerweise nichts (gibt keine Metainformationen im schlanken und effizienten Maschinencode, solange sie keiner einbaut). Dazu müsste man die der 64-Bit-Variante erst mal wissen.

    In einfachen Fällen genügt einem Tool, um einen Fuß in die Tür zu bekommen, ein Lesen an einer bestimmten Adresse (die man aber erst mal herausfinden muss), um zu erfahren, ab welcher Adresse der Datenbereich beginnt, welcher die gesuchten Werte beinhaltet, sodass man dann die statischen Offsets (die man auch vorab herausfinden muss), z.B. innerhalb einer Struktur, hinzuaddieren kann, um die Adressen der jeweils gesuchten Werte zu erhalten. Zumindest auf den ersten Blick scheint es bei der o.g. Version so oder so ähnlich zu laufen. Das sagt aber nicht, dass es bei der Variante, um die es nun geht, auch so sein muss. Mit Pech könnte es noch irgendwelche dynamisch besetzten Zeiger dazwischen geben, womit es deutlich schwieriger werden könnte.

    Aber hier dürfte noch etwas hinzukommen:
    Bei neueren Programmen und modernem Windows kann das Sicherheitsfeature Address Space Layout Randomization (ASLR), sofern es genutzt wird (muss durch den Compiler berücksichtigt werden), das Adresslayout auswürfeln. In dem Fall kann es für das zu erstellende Tool einigen Zusatzaufwand geben, nämlich um zu ermitteln, bei welchen Adressen die Bereiche starten. Es dürfte also eher nicht so wahrscheinlich sein, dass man alleine mit einem Austauschen/Patchen der Adressen zum Ziel kommt. Es geht bei ASLR nicht darum, das zu verhindern, sondern darum, zu verhindern, dass bei Speicherkorruption Werte, die Adressen als Sprungziele enthalten, mit funktionierenden anderen Sprungzielen überschrieben werden, um damit Schadcode auszuführen. Wer einmal drin ist, ist drin (auf der Ebene der jeweiligen Benutzerrechte). Dagegen ist ASLR nicht primär gedacht bzw. kein allgemein genügendes Hindernis (von Uralt-Schadcode mal abgesehen, aber auch der könnte schon den Einsprungpunkt abfragen, Heuristiken anwenden und herumprobieren).
    jabu ist offline Geändert von jabu (17.01.2023 um 21:42 Uhr)

  4. #4 Zitieren
    General Avatar von Nobbi Habogs
    Registriert seit
    Nov 2010
    Beiträge
    3.975
    Ich meine mich zu erinnern, dass ich den Ersteller schon seit Release der HE angeschrieben habe, aber er hatte sich nicht gemeldet
    Nur den Namen der Datei zu verändern reicht wie zu erwarten nicht. Da kann man das Programm auch gleich neu schreiben.

    Werd ich wohl immer alles manuell eintragen müssen
    Mit einem korrupten Speicherstand ist nicht zu spaßen. Sicherheitshalber würde ich die beiden Slots über und unter dem korrupten besser auch frei lassen. Man weiß ja nie. - Matteo
    [Bild: downloadvpk5n.gif]
    Nobbi Habogs ist offline

  5. #5 Zitieren
    Ritter Avatar von Nosykor
    Registriert seit
    Apr 2022
    Beiträge
    1.919
    Anno 1404 hatte ich auch gerade erst vor wenigen Tagen mal wieder angeschmissen, wenn auch nicht Vanilla, sondern mit Mods.
    Ich kehre immer wieder gerne zur meiner Meinung nach besten Teil der Serie vor 1800 zurück.

    Was den Warenrechner angeht: Ich hatte auch schon vor Jahren mal nach einem Update gefragt per Mail.
    Ich erhielt auch nie eine Antwort. Ich fürchte diese tolle Funktion wird nicht mehr nutzbar gemacht werden.
    Nosykor ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •