Wie kann ich ein Datum in einer EXE-Datei ändern?

4009
FernandoSBS

Ich bin zu dem Schluss gekommen, dass jedes Mal, wenn dieses Programm ein Datum überschreitet, ein Problem entsteht. Ich möchte also das Exe hacken und dieses Datum ändern, um dieses Problem zu vermeiden. Wie geht das?

Es ist ein Fenster .exe. Wenn das Problem auftritt, erhalte ich eine Nachricht. Ich kann den Text dieser Nachricht .exemit einem einfachen Suchprogramm in der Datei finden. Aber ich kann das Auslösungsdatum nicht finden.

Vielleicht, weil es viele Möglichkeiten gibt, ein Datum in einem Programm aufzuzeichnen, meine ich 18_09 17.10 17/09/2013...

-3
Strings in einem Exe bleiben nur kodierter Text, Datumsformate sind jedoch binäre Typen und werden in keiner Art von Textsuche angezeigt. Das, wonach Sie fragen, wird für jemanden ohne Wissen über das Debuggen und das binäre Patchen von Dateien ziemlich schwierig sein. Frank Thomas vor 10 Jahren 1
Die besten Vorgehensweisen sind möglicherweise die folgenden: 1. Gehen Sie in Ihrem Computerdatum ein paar Jahre zurück. 2. Erklären Sie eigentlich, mit welcher Software Ihr konkretes Problem ist. Der Versuch, ausführbare Dateien zu hacken (sagen wir demontieren), ist zeitaufwändig und nahezu erfolglos. Für das Protokoll habe ich eine Software, die sich so verhält und normalerweise rekonstruiere ich nur das Datum des PCs. Doktoro Reichard vor 10 Jahren 0
@DoktoroReichard Kennen Sie ein einfaches Programm (damit ich nicht selbst ein Programm schreiben muss), das das Datum in ein gutes ändern würde, die App starten und kurz nachdem das Programm das Programm wahrnimmt, ändert sich das Datum zurück? FernandoSBS vor 10 Jahren 0
@FrankThomas Gibt es irgendein Programm, das Sie kennen, welches ein Datum in das binäre Format konvertieren würde, damit ich die Datei danach durchsuchen kann? Es ist ganz einfach. Welches Programm brauche ich auch, um diesen Binärcode mit dem neuen Datums-Binärcode zu überschreiben? FernandoSBS vor 10 Jahren 0
Ich würde sagen, das Parsen des vorhandenen Datums ist Voraussetzung, um es zurückzuschreiben, aber im Grunde würden Sie das Programm binär lesen, die Länge und den Offset bestimmen, die Sie überschreiben müssen, das neue Datum generieren, den Offset für die Länge ersetzen und schreiben die Datei wieder raus. Frank Thomas vor 10 Jahren 0
@FrankThomas ok aber wie findet man das Datum im Exe-Code? Ich habe einen Hex-Editor verwendet, aber wie soll ich das Datum in ein Datum konvertieren, das das Programm durchsuchen kann? Für ex 2013/12/07? FernandoSBS vor 10 Jahren 0
Fragen wie diese sind der Grund, warum wir als Gruppe versuchen, Sie zu überzeugen, aufzugeben oder einen anderen Takt zu ergreifen. Da Sie die Laufzeitumgebung und den Compiler beim Kompilieren Ihrer Anwendung nicht kennen, gibt es keine Möglichkeit, die Suche zu beginnen. Frank Thomas vor 10 Jahren 1
@FernandoSBS Wenn dadurch eine abgelaufene Lizenz vermieden werden soll (Sie haben nicht "Ihr Problem" angegeben), dann finden Sie wahrscheinlich kein hartes Datum (binär oder anderweitig) im Code. (Ich bin Programmierer und ich würde es nicht so einfach machen;). Trotzdem ist SU kein Ort, an dem nach einem Rat gefragt wird, um ein solches Programm zu hacken (zu technisch und etwas unmoralisch). Sie haben vielleicht etwas Glück beim Erstellen einer Batch-Datei, wenn Sie das Datum unter "Datum / t" speichern und auf "." Setzen Datum 01-01-2013`, Starten Sie Ihr Programm und setzen Sie das Datum zurück auf `date% saved_date%`. Rik vor 10 Jahren 1

2 Antworten auf die Frage

3
Doktoro Reichard

Ich nutze die Gelegenheit, um diese Antwort zu schreiben, um Sie davon abzuhalten, sich mit der ausführbaren Datei selbst zu beschäftigen. Warum sind die Gründe in den Kommentaren und einige von mir aufgeführt?

  • Wie Rik gesagt hat, hat der Entwickler dieses Programms höchstwahrscheinlich nicht das tatsächliche Ablaufdatum hartcodiert (da dies bedeuten würde, dass ein anderes Programm erstellt wird, sobald ein Jahr vergangen ist). Dies würde höhere Wartungs- und Supportkosten für den genannten Entwickler bedeuten.
  • Selbst wenn er das Datum hart codiert hat, gibt es keinen Konsens darüber, wie er gespeichert werden soll. Wenn das Ablaufdatum eine Zeichenfolge ist, haben Sie möglicherweise etwas Glück, da, wie Frank sagte, die meisten Zeichenfolgen so gespeichert werden, wie sie sich in einer ausführbaren Datei befinden. Dies ist jedoch keine Regel, und die Zeichenfolge kann verschlüsselt sein. Abhängig davon, wie der Compiler den Code optimiert hat, ist sie möglicherweise in binärem Text verankert, den Sie nicht leicht verstehen können.
  • Vorausgesetzt, Sie könnten das Programm zerlegen, müssten Sie dann die Tausenden von Codezeilen verstehen, die in das Programm eingegangen sind, und feststellen, von wo aus das Verfallsdatum gespeichert oder abgerufen wird. Je nach Land und Gesetzgebung ist diese Aktivität jedoch entweder verpönt oder illegal.

Ratschläge beiseite, ich huckle auf das, was Rik gesagt hat, und baue es ein wenig aus.

Sie können eine Batchdatei (wie Sie .exe-Dateien, ich nehme an, Windows) mit den folgenden Befehlen erstellen:

SET CUR_DATE=%DATE% DATE <insert your pretended date here> <start your program here> DATE %CUR_DATE% 

Obwohl ich es nicht getestet habe, tut dies angeblich Folgendes:

  1. Speichert das aktuelle Datum in% DATE%.
  2. Stellt das Datum des PCs mit dem Befehl DATE auf das gewünschte Datum ein .
  3. Führt das gewünschte Programm aus.
  4. Setzt das Datum auf das aktuelle Datum zurück, sobald Ihr Programm beendet ist.

Sie können diesen Batch im Verzeichnis des Programms speichern. Daher müssen Sie nur den Namen des Programms und nicht den vollständigen Pfad eingeben. Seien Sie jedoch an dem von Ihnen eingegebenen Datum konsistent, da es in dem Format sein muss, das Ihr System erwartet. Weitere Informationen finden Sie im Link zum Befehl DATE. Alternativ können Sie nur feststellen, echo %date%in welchem ​​Format Ihr Computer das von Ihnen eingegebene Datum erwartet.

Yeah. This is one of those cases where if you have the skill to do it you have the knowledge to know how to go about it. In the old days it actually wasn't that hard if the stuff wasn't hidden (Each new version of Dos I would go through and patch command.com to change the default environment size) but as we move to higher level languages you get more and more crud in the way and it gets much harder to find what you're looking for. Loren Pechtel vor 10 Jahren 0
Das Problem ist, ich möchte, dass das Datum auf% DATE% zurückkehrt, sobald sich die Programme öffnen. Nicht nachdem es geschlossen hat. FernandoSBS vor 10 Jahren 0
Fügen Sie in diesem Fall vor dem Programmnamen / -pfad "start" (http://ss64.com/nt/start.html) hinzu. Aber sind Sie sicher, dass das Programm danach läuft? Doktoro Reichard vor 10 Jahren 2
ja es funktioniert. Ich musste netstat benutzen, um auf 1000 ms zu warten, damit es funktioniert. FernandoSBS vor 10 Jahren 0
@FernandoSBS `netstat` funktioniert ebenfalls. `ping 1.1.1.1 -n 1 -w 3000> nul` ist ein anderer Weg (er schläft 3 Sekunden lang oder stellt die 3000 für die Millisekunden ein). Rik vor 10 Jahren 1
ja netstat ist was ich verwendet habe. FernandoSBS vor 10 Jahren 0
@ FernandoSBS Ooo, und haben wir Timeout 1 vergessen? ;) Die Batchdatei hat also eigentlich keine native Methode, aber wir haben bereits 3 Alternativen. Rik vor 10 Jahren 0
0
Matthew

Resource Hacker ( http://www.angusj.com/resourcehacker/ ) ist ein Freeware-Tool, mit dem Code und andere Elemente in Exe-Dateien geöffnet und geändert werden können.