|
You last visited: Today at 22:56
Advertisement
RuntimeCrypter
Discussion on RuntimeCrypter within the C/C++ forum part of the Coders Den category.
06/22/2012, 19:52
|
#1
|
elite*gold: 0
Join Date: Mar 2012
Posts: 26
Received Thanks: 3
|
RuntimeCrypter
Hi, ich will einen Laufzeitverschlüssler schreiben. Folgendes Problem: Ich habe eine EXE verschlüsselt in einem String gespeichert,anschließend wird sie entschlüsselt. Jetzt muss sie aber irgendwie in den Arbeitsspeicher geladen und ausgeführt werden. Wie geht das?
|
|
|
06/22/2012, 20:17
|
#2
|
elite*gold: 0
Join Date: Feb 2012
Posts: 115
Received Thanks: 18
|
Kenn mich hier selbst nicht aus, aber folgendes weiß ich zumindest das funktioniert.
Kann ich aber nur in ASM.
Du speicherst deine Instructions in .data davor machst du ein Label hin.
Dann entschlüsselst du die Instructions in deinem Code und jmp'st zum Label.
Hab jetzt aber leider keine Ahnung wie man das mit einer ganzen Exe macht.
|
|
|
06/23/2012, 00:04
|
#3
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Das geht nicht so einfach, wenn du das Modul vollständig nur im Memory haben willst und nicht temporär ein File erstellen willst, musst du das komplette Modul manuell mappen, heißt du musst all das tun, was Windows normalerweise tut, wenn du CreateProcess aufrufst.
Du allozierst speicher fürs Image, liest die Header ein, liest die IAT ein und lädst die Module nach, du füllst die IAT mit Adressen, etc.
Am Ende rufst du dann die main() deines eigentlichen Programms auf.
|
|
|
06/23/2012, 15:45
|
#4
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
Quote:
Originally Posted by MrSm!th
Das geht nicht so einfach, wenn du das Modul vollständig nur im Memory haben willst und nicht temporär ein File erstellen willst, musst du das komplette Modul manuell mappen, heißt du musst all das tun, was Windows normalerweise tut, wenn du CreateProcess aufrufst.
Du allozierst speicher fürs Image, liest die Header ein, liest die IAT ein und lädst die Module nach, du füllst die IAT mit Adressen, etc.
Am Ende rufst du dann die main() deines eigentlichen Programms auf.
|
da widerspreche ich mal, normal reicht es aus, wenn man code an das image anhängt und das AddressOfEntryPoint field auf den begin des eigenen codes setzt. damit fällt das nachladen der iat und auch der header weg. (es sei denn man will die iat entfernen)
|
|
|
06/23/2012, 16:19
|
#5
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by HeavyHacker
da widerspreche ich mal, normal reicht es aus, wenn man code an das image anhängt und das AddressOfEntryPoint field auf den begin des eigenen codes setzt. damit fällt das nachladen der iat und auch der header weg. (es sei denn man will die iat entfernen)
|
So rum gehts natürlich auch. Ich dachte, er will das Image in sein Programm integrieren.
Dann darfst du aber in deinem Code wiederum keine großartigen APIs nutzen, die nicht in der IAT des eigentlichen Programms stehen.
Und btw. eigentlich ist das Zerstören der IAT bei nem Crypter wohl Standard.
|
|
|
06/23/2012, 16:23
|
#6
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
Quote:
Originally Posted by MrSm!th
So rum gehts natürlich auch. Ich dachte, er will das Image in sein Programm integrieren.
Dann darfst du aber in deinem Code wiederum keine großartigen APIs nutzen, die nicht in der IAT des eigentlichen Programms stehen.
Und btw. eigentlich ist das Zerstören der IAT bei nem Crypter wohl Standard.
|
sicher ist das zerstören der iat standard, aber nicht zwingend notwendig. darüber lässt sich also streiten
wenn man das image allerdings in den eigenen prozess mappen will hast du natürlich recht.
|
|
|
All times are GMT +1. The time now is 22:58.
|
|