Kann man mit VB kenntnissen einen Crypter erstellen?
Druckbare Version
Kann man mit VB kenntnissen einen Crypter erstellen?
Ja,man kann mit VB Crypter erstellen.
www.opensc.ws/vb-rat-source/1665-vb-packer-source-code.html
@Kolabi danke werd ich mir mal anschauen
Hallo BlackBerry, ich hab mich ein bisschen nach deinem Tutorial orientiert, finde aber meinen Fehler nicht, warum es nicht funktioniert...
Ich bin zwar fertig, aber wenn die Datei gecrypted ist, lässt sie sich nicht starten...
Main
http://nopaste.free-hack.com/index.php?id=8ce76fe53e
out_section_details
http://nopaste.free-hack.com/index.php?id=3a4d161851
Ich hab echt keinen Plan mehr was ich falsch mache... bin am verzweifeln :(
In Zeile 7 fehlt ein int vor der main() funktion.. also anstatt main(), musst du int main() schreiben!
Ich benutze Dev-CPP, der fügt das automatisch beim kompilieren ein, wenn ich das manuell mache, bekom ich ne fehlermeldung.
@Deshoax
Ich habe dir doch schon beim letzten Mal gesagt, dass du die Datei in den Arbeitsspeicher laden sollst. ( http://free-hack.com/showpost.php?p=309320&postcount=4 )
Bei dem ganzen fputc's Blickt doch niemand mehr durch.
Und das fehlende bzw. willkürliche Einrücken von Code-Blöcken trägt auch nicht gerade zur Übersichtlichkeit bei.
Folgende Optionen bei Dev-C++ nehmen dir das Einrücken sogar beinahe ab:
http://img13.imageshack.us/img13/5142/r65f6.png
Wenn du deinen Code eingerückt hast und auf http://pastebin.com/ "gepastet" hast (da kann man das dann besser kopieren), wäre ich gerne bereit mir das nochmal anzusehen. (obwohl ich dringend zur Benutzung von Strukturen wie IMAGE_DOS_HEADER, IMAGE_NT_HEADERS, IMAGE_SECTION_HEADER, usw. rate, da man dadurch mit der korrekten Positionierung der Werte schonmal keine Probleme mehr hat)
______________________________________
Und jetzt wenigstens noch ein bisschen was produktives...
Ich habe versucht auf test.exe (das kleine "Hello World"-Programm aus dem Tutorial) zu crypten.
Als Option wollte ich, dass eine neue Section hinzugefügt wird.
Hier die Ausgabe von der Konsole:
PEiD sagt nun folgendes:Code:Bitte EXE Datei selektieren: test.exe
Magic DOS Signatur erkannt!
PE Signatur erkannt!
Number of Sections: 3
1. Section: <.text>
Virtual Size [HEX]: 26
Virtual Size [DEZ]: 38
Virtual Offset [HEX]: 1000
Virtual Offset [DEZ]: 4096
Raw Size [HEX]: 200
Raw Size [DEZ]: 512
Raw Offset [HEX]: 400
Raw Offset [DEZ]: 1024
Flags [HEX]: 60000020
Flags [DEZ]: 1610612768
2. Section: <.rdata>
Virtual Size [HEX]: 92
Virtual Size [DEZ]: 146
Virtual Offset [HEX]: 2000
Virtual Offset [DEZ]: 8192
Raw Size [HEX]: 200
Raw Size [DEZ]: 512
Raw Offset [HEX]: 600
Raw Offset [DEZ]: 1536
Flags [HEX]: 40000040
Flags [DEZ]: 1073741888
3. Section: <.data>
Virtual Size [HEX]: 12
Virtual Size [DEZ]: 18
Virtual Offset [HEX]: 3000
Virtual Offset [DEZ]: 12288
Raw Size [HEX]: 200
Raw Size [DEZ]: 512
Raw Offset [HEX]: 800
Raw Offset [DEZ]: 2048
Flags [HEX]: C0000040
Flags [DEZ]: 3221225536
Ausgabe von RO_VS_fuenf= 42B
Wollen Sie die Crypter-Stub in einer neuen Section einpflanzen?
1. New Section
2.Vorhandene Section
=1
Entrypoint [HEX]: 1000
Entrypoint [DEZ]: 4096
Entrypoint wurde nach 42B verlegt!
RAW Offset [HEX]: 400
RAW Offset [DEZ]: 1024
[Zeichen]
Datei ist gecrypted!
FERTIG!
http://img34.imageshack.us/img34/6929/peidnotvalid.png
LordPE sagt das:
http://img34.imageshack.us/img34/7162/lordpeepsec.png
----> Wo ist die neue Section?
Ein Blick in OllyDBG verrät:
http://img194.imageshack.us/img194/3...lynonewsec.png
---> Es wurde nichtmal eine neue Section hinzugefügt!
Der neue EntryPoint liegt außerdem zwischen IMAGE_DOS_HEADER/IMAGE_NT_HEADERS und der ersten Section.
Wenn man sich das so anschaut ist klar, wieso es einen Fehler gibt, wenn man versucht die Datei zu starten:
http://img193.imageshack.us/img193/1497/ollyep.png
-----------> Beim EntryPoint ist nichts!
mfG. BlackBerry
Also:
Flag setzten tut man immer noch am besten mit OR:Code:# printf("\nFlags \t[HEX]: \t%X",VS);
# printf("\nFlags \t[DEZ]: \t%u\n",VS);
# fseek(stream,e_lfanew+point,SEEK_SET);
# VS+=0x80000000;
VS|=0x80000000;
Denn sollte dieses Flag schon zufällig gesetzt sein, bekommst du durch eine Addition einen Überlauf und als Ergebnis sowas wie 0x20 oder 0x40 - was dann natürlich zu "unerklärbaren" Fehlern führt.
Außerdem:das ermittelt ja praktisch den neuen EP. Der wird aber irgendwie auf VirtualSize+5 gesetzt. Ergibt für mich keinen Sinn. Sollte eher (wenn es die letze Section sein soll) so gehen: RO_VS_fuenf=VirtualOffset+VirtualSize (die Werte ließt du ja eher ein, in der großen Schleife. Allerdings komme ich wegen der total komischen Einrückung sowie Benutzung gleicher Variablennamen (VS) für alle möglichen Werte (warum überhaupt? warum nicht aussagekräftige Variablen nutzen? ) nicht zu recht, daher musst du schon selber schauen, wo du den Code am besten platzierst).Code:if(xcount==1) RO_VS_fuenf+=VS;
Jedenfalls, wenn man RO_VS_fuenf=VirtualOffset+VirtualSize macht, wird es korrekterweise nach dem "Sectionloop" die Adresse der letzen Section+Sectionsize (also die Adresse des "letzen" Bytes) beinhalten. Wenn man nun eine Stub dranhängt, zeigt RO_VS_fuenf (und damit der neue EP) korrekterweise auf diese Stub.
Schönes TUT! Könntest Du das ganze auch noch mal für C++ schreiben?
Wenn du es jetzt nicht verstehst, wirst du es noch weniger verstehen, wenn ich Klassen zum Einsatz bringen würde.
Zudem lässt sich sagen, dass alle Sourcecodes in diesem Tutorial auch 100% syntaktisch korrekte C++ Sourcecodes darstellen.
Ich verstehe also nicht warum eine Übersetzung nötig sein sollte.