Verhexung einer * .exe - wird auch ein Zeitstempel geändert?

875
Christopher Francisco

Ich versuche, eine *.exeDatei zu hexen, um die Schriftart von Arialzu ändern Tahoma. Ich habe es schon getan, das Problem ist, dass das Programm bemerkt, dass sich etwas geändert hat.

Ich bin relativ neu im Hexen, daher bin ich mir nicht sicher, ob sich bei jedem Hexen eines Exes auch ein Datum ändert (und wahrscheinlich merkt es das Programm). Kann jemand dies bestätigen und wenn möglich eine Lösung vorschlagen?

1
Wenn es sich um ein einfaches Problem der Zeitänderung handelt, können Sie einen Zeitstempel-Editor wie touch verwenden. Es gibt viele äquivalente Fenster. Sun vor 9 Jahren 0

2 Antworten auf die Frage

1
phyrfox

Normalerweise ist der Datumszeitstempel einer ausführbaren Datei ohne Bedeutung, da der Zeitstempel nicht die ursprüngliche Kompilierzeit ist, sondern die Installationszeit. Die ausführbare Datei kann auf keinen Fall von einem externen Zeitstempel abhängen, um zu überprüfen, ob sie intakt ist.

Einige ausführbare Dateien sind digital signiert. Dies bedeutet, dass eine kryptografische Funktion mit dem Schlüssel des Herausgebers auf die Datei angewendet und an die ausführbare Datei angehängt wird. Diese Signatur kann vom Betriebssystem (z. B. Windows) oder von der ausführbaren Datei selbst überprüft werden.

Alle Änderungen an der Binärstruktur der ausführbaren Datei werden bemerkt, da die Signatur nicht mit dem berechneten Wert übereinstimmt. Normalerweise gibt es keine Möglichkeit, die richtige Signatur ohne den Originalschlüssel zu generieren. Dies ist eine Sicherheitsfunktion, die Manipulationen verhindert (z. B. um Software zu knacken oder eine Virusinfektion).

Darüber hinaus kann es auch CRC (z. B. CRC-32) geben, mit dem einfach Änderungen an der ausführbaren Datei erkannt werden können. In diesem Fall prüft die ausführbare Datei möglicherweise die Überprüfung intern, was Sie möglicherweise umgehen können, indem Sie den ausführbaren Code durchlaufen, bis Sie die Prüfroutine und no-op (0x90) aus dem Funktionsaufruf an die Überprüfungsfunktion finden.

Wenn der Programmierer eine eigene Installationsroutine geschrieben hat, kann der Datums- und Zeitstempel auf ein beliebiges Datum und eine beliebige Uhrzeit gesetzt werden, die der Programmierer wünscht. Wenn ja, ist es möglich, dies aus einer Batch-Datei zu machen. LDC3 vor 9 Jahren 0
@ LDC3 Das stimmt, und ich habe Installationsdaten gesehen, die dem Kaufdatum meines Computers vorausgingen, aber ich vermute, dass dies nur wenige Entwickler tun, da es zu einfach ist, das System dazu zu bringen, einen Zeitstempel anzuwenden, der das Programm dazu bringt, zu denken, dass es nicht der Fall war. es wurde geändert. Als Entwickler von mehr als 30 Jahren weiß ich, dass ich keinem etwas trauen würde, das von einem kompetenten Benutzer so leicht geändert werden könnte. phyrfox vor 9 Jahren 1
1
Scott Rhee

Es scheint, dass das Exe eine Selbstschutzlogik hat, was heutzutage normal ist. Die Möglichkeiten, diesen Schutz zu erreichen, sind jedoch nicht gleich. Einige verwenden digitale Signaturen, andere verwenden CRC-Prüfungen, andere verwenden Modulschutzwerkzeuge von Drittanbietern und so weiter. Ich glaube jedoch, dass der Drittanbieter nicht Ihr Fall ist, da die von diesen Tools generierten Module normalerweise komprimiert und / oder verschlüsselt sind, sodass Sie die Informationen nicht direkt finden konnten.

Obwohl es möglich ist, diese Zeitstempelinformation zum Erkennen von Modifikationen zu verwenden, sollte es jedoch sehr selten sein, den Zeitstempel nur zum Schutz zu verwenden, da jeder ihn mit Hilfe dieser Art von Werkzeugen ändern kann . Sie können die Attribute zurücksetzen, wenn Sie das Original haben, da es nicht beschädigt wird. Wahrscheinlich funktioniert es jedoch nicht.

Was ist der nächste Schritt? Um das Problem zu überwinden, müssen wir wissen, welche Art von Überprüfung für die Modifizierung durchgeführt wird, wobei das Erkennen wesentlich komplizierter ist als das Hexen eines Moduls. Danach können wir einige fortgeschrittene Ansätze anwenden, wie z. B. In-Process-Memory-Modifikationen, das Aufbrechen der Erkennungsroutine oder das Anhängen von Windows-API-Aufrufen, um das Ziel des Ersetzens von Schriftarten zu erreichen. Keiner von ihnen kann jedoch nur durch Hexing erreicht werden. Sie müssen zumindest lernen, wie man Debugger verwendet. Vielleicht hat jemand die Datei bereits zu verschiedenen Zwecken geknackt, z. B. als NO-CD-Patch, und dann können Sie sie für das Hexing verwenden, und wahrscheinlich funktioniert sie, da die Logik bereits deaktiviert ist. Bedenken Sie jedoch immer die Legalität, bevor Sie Maßnahmen ergreifen.

Sie versuchen jedoch, nur die verwendete Schriftart zu ändern. Das sieht für mich ziemlich legitim aus - warum bitten Sie den Hersteller der Anwendung nicht, eine Option zum Ändern der Schriftarten zu wählen?

Ja, ich habe schon gefragt, es ist ein privater Server für ein Spiel, also ist das legale Zeug kein Thema. Ich weiß, wie man Debugger einsetzt, ich dachte auch daran, so weit zu gehen. Könnten Sie einen Link oder ähnliches vorschlagen, damit ich Anweisungen zum Finden der Überprüfung finden kann? Es ist auch kein Selbstprüfprogramm. Es ist eine * .exe (die, die ich hexiere), die von einer anderen * .exe geöffnet wird (die, die die Überprüfung durchführt). Christopher Francisco vor 9 Jahren 0
Christopher // Wenn Sie Debugger wie OllyDbg und WinDBG verwenden können, versuchen Sie herauszufinden, wann die Ziel-EXE geöffnet wird. "CreateFile" API ist ein guter Ausgangspunkt. Verfolgen Sie dann sorgfältig, bis der Fehler "Modified Exe" angezeigt wird. Auf diese Weise können Sie herausfinden, welche Logik für die Erkennung verwendet wird, und diesen Fluss ändern, indem Sie "den Anrufer" verhexen. Der Anrufer kann jedoch auch "selbstgeschützt" sein. Wenn ja, geht die Frage auf das Original zurück. Scott Rhee vor 9 Jahren 0
Was passiert übrigens, wenn Sie die aufgerufene EXE direkt ausführen? Ich weiß, dass es nicht funktioniert hat, oder Sie würden diese Frage nicht aufwerfen :), aber ich würde gerne wissen, warum es nicht funktioniert hat. Wenn Sie den Grund kennen, kann ich Ihnen vielleicht ein paar weitere Optionen geben, indem Sie entweder den Angerufenen oder den Anrufer täuschen. Scott Rhee vor 9 Jahren 0
Ich werde es heute Nachmittag mit OllyDbg und WinDbg versuchen. Wenn ich die EXE direkt (vor und nach dem Hexen) öffne, passiert nichts: Also habe ich den Windows Task Manager überprüft und die EXE erschienen und sofort verschwunden Christopher Francisco vor 9 Jahren 0
Haben Sie die gleichen Befehlszeilenparameter ausprobiert, als würde der Angerufene vom ursprünglichen Anrufer angerufen? Um die Parameter zu erhalten, können Sie den Process Explorer verwenden. Starten Sie einfach die Apps wie gewohnt, suchen Sie das Ziel in Process Explorer und überprüfen Sie die Eigenschaften. Dieser Link kann Ihnen helfen. http://www.bleepingcomputer.com/tutorials/determine-command-line-arguments/ Scott Rhee vor 9 Jahren 0