Frage:
So verhindern Sie die Verwendung von Ressourceneditoren
Mellowcandle
2013-03-30 13:03:52 UTC
view on stackexchange narkive permalink

Es gibt verschiedene Tools, mit denen Sie die Ressourcen von ausführbaren Windows-Dateien bearbeiten können. Diese Tools bieten eine sehr einfache Oberfläche zum Ändern des Erscheinungsbilds von Programmen. Das Ersetzen von Symbolen, Text und Menüs kann problemlos durchgeführt werden, ohne dass Kenntnisse über das Umkehren erforderlich sind.

Meine Frage ist, welche Option habe ich, um zu verhindern, dass die Ressourcen so einfach bearbeitet werden können?

Drei antworten:
#1
+15
Remko
2013-03-31 02:25:26 UTC
view on stackexchange narkive permalink

Eine elegante und einfache Lösung wäre, Ihre ausführbare Datei zu signieren und die Signatur beim Start zu überprüfen (jede Änderung macht die Signatur ungültig). Selbst wenn jemand Ihre Signaturprüfung patcht, ist die Signatur immer noch ungültig, was deutlich macht, dass die Exe nicht dieselbe ist, die Sie geliefert haben.

Meine anderen Gedanken wären, einen Exe-Packer zu verwenden oder eine Prüfsumme zu erstellen zu den Ressourcen (beide wurden bereits in der Antwort von @angealbertine vorgeschlagen).

#2
+11
waliedassar
2013-04-03 17:56:05 UTC
view on stackexchange narkive permalink

Außerdem können wir Fehler in den Editoren selbst ausnutzen, um Manipulationen an unseren Ressourcen zu verhindern. Der interessante Teil hier ist, dass die meisten Ressourceneditoren keine Ahnung haben, wie nicht typische (nicht sehr untypische) PE-Dateien analysiert werden sollen. Einige Redakteure gehen beispielsweise davon aus, dass der Name des Ressourcenabschnitts immer .rsrc sein muss. Beispiele:

  1. Ressourcen-Hacker

  2. Es wird davon ausgegangen, dass die Größe der IMAGE_OPTIONAL_HEADER -Struktur sizeof (IMAGE_OPTIONAL_HEADER) , derzeit 0xE0 in hex, während es sogar größer sein kann. Wenn die Größe einen größeren Wert hat, verwirft Resource Hacker die gesamte PE-Datei.

  3. Restorator

    • Wie 1c.
    • Verwendet das Feld NumberOfRvaAndSizes , das leicht als 0xFFFFFFFF gefälscht werden kann. Dies führt dazu, dass Restorator die gesamte PE-Datei verwirft.
    • Angenommen, der Name des Ressourcenabschnitts muss .rsrc sein. Ändere alles andere. Dies führt dazu, dass Restorator das gesamte PE verwirft.
    • Jeder Ressourcenabschnitt, dessen Feld Merkmale unter anderem auf IMAGE_SCN_CNT_UNINITIALIZED_DATA gesetzt ist, wird von Restorator verworfen.

    Demos hier: http://pastebin.com/ezsDCaud

  4. ol>
Klug! Frage jedoch: Einige unserer Vorschläge scheinen für reiurce-Definitionen nicht den Spezifikationen zu entsprechen. Dies kann dazu führen, dass der Loader ausfällt oder Ressourcenfunktionen (z. B. Loadstring) in aktuellen oder zukünftigen Windows-Versionen ausfallen.
Es ist unwahrscheinlich, dass Microsoft das grundlegende Verhalten seines PE-Lade- und Durchlaufcodes ändert. Ich habe sie noch nie gesehen. Die einzige Variation im Verhalten war damals, als der win9x-Kernel verwendet wurde, und sie unterschied sich vom NT-Kernel. Microsoft ist sich bewusst, dass Linker aller Art so unterschiedliche Interpretationen des PE-Dateiformats generieren, dass sie sicher nichts berühren dürfen. Tatsächlich ist das PE-Dateiformat so überraschend vielfältig, dass die einzige Konstante die Kompatibilität mit dem Windows-Code ist. Natürlich gut testen, nachdem du solche Mods gemacht hast.
Der Link zu antiResHacker.exe ist tot
#3
+10
Ange
2013-03-30 13:33:47 UTC
view on stackexchange narkive permalink

Ressourcen sind nur eine Standardstruktur mit definierten Konstanten, aber am Ende ist es nur eine rekursive Struktur für einen Puffer, unabhängig davon, was er enthält ( hier ist das Standardlayout).

Es kann theoretisch alles enthalten - jede Tiefe, Schleifen, ungültige Typen usw., aber dann funktionieren Standard-APIs nicht mit ihnen.

Sie müssen dies also sicherstellen, wenn Sie dies tun Verschlüsseln oder komprimieren Sie Ressourcen. Sie müssen wiederhergestellt werden (sowohl die Ressourcenverzeichnisstruktur als auch deren Inhalt), bevor eine dieser APIs verwendet wird. Dies ist möglicherweise nicht offensichtlich.

Insbesondere werden einige Ressourcen verwendet vom Betriebssystem, noch bevor die Datei ausgeführt wird, z. B. erste Symbole, Manifest- und Versionsinformationen. Daher möchten Sie diese wahrscheinlich intakt halten.

Eine einfache Möglichkeit, die Bearbeitung trivialer Ressourcen zu verhindern, besteht darin, einen Stream auszuführen Verschlüsselung ausgewählter Ressourcen, der endgültigen Binärdatei (nachdem der Linker sie eingerichtet und den Ressourceneintrag im DataDirectory generiert hat) und Wiederherstellung dieser Ressourcen auf dem und oder bei der Programminitialisierung.

Wenn Sie nach einer vorgefertigten Lösung suchen, unterstützen viele gute Packer wie PECompact die Ressourcenkomprimierung und verhindern so die Bearbeitung externer Ressourcen.

Ich frage mich jedoch, ob hier eine Art Ladezeit-Entpacken / Entschlüsseln funktionieren könnte. Ressourceneditoren arbeiten vermutlich mit den Daten auf der Festplatte, nicht im Speicher.
Du hast recht, ich habe meine Antwort bearbeitet.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...