![]() |
Exe-Crypter
//Ich hoffe mal das Thema darf hier behandelt werden...
Um das PE Format besser zu verstehen, dachte ich, ich versuche mich mal an einem .exe Crypter. Einen einfachen XOR Crypter bekomme ich bereits hin... Jedoch benutze ich dabei sehr viele PE Unit's die die meiste Arbeit machen... Mich würde nun interessieren wie andere Crypter funktioniert. Beispiel: Ich habe einen String "Beispiel". Nun vertausche ich die Buchstaben nach einem bestimmten Muster, dass z.B. : "spieielB" herauskommt. So müsste es doch auch Möglichsein die OP Codes einen Programms in einen String zu speichern z.B. inc eax, dec edx INC Byte ptr ds:[eax] hat ja die Opcodes: 40 4A FE 00 So müsste es doch möglich sein, die OpCodes(Disassembly) in einen String einzulesen, und diesen dann wie oben das "Beispiel" auch zu vertauschen. Danach muss man noch die Entschlüsselunsroutine anhängen(neue Section wäre wohl am klügsten? ) Und den EntryPoint umbiegen. So in der Theorie klappt das wunderbar... Nur praktisch fehlt mir ein Punkt an dem ich anfangen kann. Tipps/Ratschläge/Verbesserungsvorschläge/Beispiele wären super =) Linguini |
Re: Exe-Crypter
Ich würde Dir ernsthaft empfehlen einfach mal selbst eine PE Unit zu schreiben, mit denen Du bestimmte Grundfunktionen implementierst (IAT, EAT, Sections enumerieren und editieren; Header auslesen und modifizieren). Zum einen weil die PE Unit die Du derzeit verwendest, einfach nur schlecht ist und zum anderen weil Du nicht lernst wie das PE Format aufgebaut ist, wenn Du fremde Sourcen änderst ;).
Ansonsten wäre das Anhängen einer neuen Section bzw. das Vergrößern der letzten Section der "Standardweg". Die anderen Sections kannst Du prinzipiell als "array of byte" sehen und entsprechend Deines "Vertauschalgorithmus" lustig die Bytes hin und her tauschen. Ich sag aber gleich, daß sehr viele AV Programme Deine produzierten Dateien via Heuristik als infiziert flaggen werden. |
Re: Exe-Crypter
Zitat:
Aber ich änder ja keine fremden Sourcecodes, ich verwende sie ja, um z.B. das finden einer Section oder ähnliches zu vereinfachen. @Schlechte Pe Unit Wie gesagt es sind ja mehrere, untPeFile,PEUtils,peformat Eine davon wird wohl nicht schlecht sein :D Zitat:
Zitat:
Delphi-Quellcode:
Wenn ich richtig liege, sollte sich doch jetzt die Datei als String in "result" befinden oder mach ich was falsch?
function FileToStr(const FileName:String):String;
var Stream:TFileStream; begin Stream:=TFileStream.Create(FileName,fmOpenRead); SetLength(result,Stream.Size); Stream.Read(result[1],Stream.Size); Stream.Free; Und mir ist noch nicht ganz klar, wie ich die decrypt Routine in die Datei schreiben soll, ich muss ja den neuen EntryPoint und die StartDeCrypt und EndDeCrypt Adressen festlegen... Danke für dein Hilfe. |
Re: Exe-Crypter
Zitat:
Zitat:
Zitat:
|
Re: Exe-Crypter
Lade dir mal den
![]() Anfangs hat es mir sehr geholfen. Es sagt einem viel über die Struktur / Aufbau einer PE-Datei (exe/dll). MfG |
Re: Exe-Crypter
|
Re: Exe-Crypter
Ich hab ihm längst gesagt er soll ne eigene Unit fürs PE Format schreiben. Das man dazu die Dokumentation zum Format benutzt, versteht sich irgendwie von selbst wie ich finde.
|
Re: Exe-Crypter
@0xF30FC7
Ist es mit dem File Mapping Mechanismus auch möglich einfach Bytes hinundher zu verschieben? Denn FileMapping, "mappt" ja eben immer nur einen Teil der Date (soweit ich weiß).
Delphi-Quellcode:
Diese Funktion ließt jetzt eine Datei in ein Byte Array ein.
function Datei in Array(Filename: String): Cardinal; //von mr_emre_d
var myFile: File of Byte; RawFileData: TByteArr; begin AssignFile( myFile, Filename ); Reset( myFile ); SetLength( RawFileData, FileSize( myFile ) ); BlockRead( myFile, RawFileData[0], Length(RawFileData) ); CloseFile( myFile ); So dann befindet sich die Datei in "RawFileData". Wie kann ich nun etwas mit den Bytes etwas "jonglieren". Stringfunktion wie Insert etc. dürften da ja wohl eher nicht funktionieren oder :D? Und ich werde auf jedenfall eine eigene PE Unit schreiben. Aber das braucht halt auch seine Zeit. @mr_emre_d Sehr interessantes Tool Danke =) @TurboMartin Also ich finde die Informationen bisher sehr nützlich. |
Re: Exe-Crypter
|
Re: Exe-Crypter
Hi brechi/ogc,
Zitat:
Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz