Hallo
Ich möchte bei einem meiner Programme die IAT verschlüsseln und zur Laufzeit wieder entschlüsseln. Wie ich im Prinzip die IAT verschlüssel ist mir klar. Mir stellt sich jedoch die Frage - "Wie entschlüssle ich diese zur Laufzeit wieder ?"
Bisher hatte ich mir folgende Gedanken dazu gemacht.
Der Windows PE-Loader schreibt ja beim Laden der PE die Adressen der Imports in die IAT. Wenn ich nun die IAT aber encrypted habe und erst wieder decrypten muss, kann der PE-Loader ja seine Arbeit nicht verrichten (Was macht der Loader eigentlich, wenn die IAT nicht lesbar ist ?). Das hieße, dass ich die Adressen der Imports manuell erstellen muss (GetProcAddress, GetModuleHandle).
Dieser Ansatz stellt mich jedoch vor das Problem, dass ich nicht weiß wie ich an die Adresse von GetProcAddress / GetModuleHandle komme, wenn die IAT encrypted ist.
Eine mögliche Lösung, die mir eingefallen ist, wäre es eine eigene Version von GetProcAddress / GetModuleHandle zu schreiben.
Das war dann jedoch der Punkt an dem meine Recherchen scheiterten.
Wär super, wenn jemand von euch hierbei weiter weiß
MrSpider
Ich möchte bei einem meiner Programme die IAT verschlüsseln und zur Laufzeit wieder entschlüsseln. Wie ich im Prinzip die IAT verschlüssel ist mir klar. Mir stellt sich jedoch die Frage - "Wie entschlüssle ich diese zur Laufzeit wieder ?"
Bisher hatte ich mir folgende Gedanken dazu gemacht.
Der Windows PE-Loader schreibt ja beim Laden der PE die Adressen der Imports in die IAT. Wenn ich nun die IAT aber encrypted habe und erst wieder decrypten muss, kann der PE-Loader ja seine Arbeit nicht verrichten (Was macht der Loader eigentlich, wenn die IAT nicht lesbar ist ?). Das hieße, dass ich die Adressen der Imports manuell erstellen muss (GetProcAddress, GetModuleHandle).
Dieser Ansatz stellt mich jedoch vor das Problem, dass ich nicht weiß wie ich an die Adresse von GetProcAddress / GetModuleHandle komme, wenn die IAT encrypted ist.
Eine mögliche Lösung, die mir eingefallen ist, wäre es eine eigene Version von GetProcAddress / GetModuleHandle zu schreiben.
Das war dann jedoch der Punkt an dem meine Recherchen scheiterten.
Wär super, wenn jemand von euch hierbei weiter weiß

MrSpider