AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exe-Crypter

Ein Thema von Linguini · begonnen am 22. Mai 2009 · letzter Beitrag vom 22. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#1

Exe-Crypter

  Alt 22. Mai 2009, 14:02
//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
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Exe-Crypter

  Alt 22. Mai 2009, 14:37
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.
Fridolin Walther
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#3

Re: Exe-Crypter

  Alt 22. Mai 2009, 15:03
Zitat von 0xF30FC7:
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 .
Ich werde das auf jedenfall mal machen. Auch wenn es sich (für mich) ziemlich schwer anhört.
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


Zitat von 0xF30FC7:
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.
Das hört sich schonmal gut an.

Zitat von 0xF30FC7:
Ich sag aber gleich, daß sehr viele AV Programme Deine produzierten Dateien via Heuristik als infiziert flaggen werden.
Ich hab ja keinenfalls vor, diese Programme damit zu schützen/verteilen . Mich treibt eher die Neugier an.

Delphi-Quellcode:
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;
Wenn ich richtig liege, sollte sich doch jetzt die Datei als String in "result" befinden oder mach ich was falsch?

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.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Exe-Crypter

  Alt 22. Mai 2009, 15:15
Zitat von Linguini:
Ich werde das auf jedenfall mal machen. Auch wenn es sich (für mich) ziemlich schwer anhört.
Es ist eigentlich recht einfach, sobald man einmal die Strukturen verstanden hat.

Zitat von Linguini:
Delphi-Quellcode:
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;
Wenn ich richtig liege, sollte sich doch jetzt die Datei als String in "result" befinden oder mach ich was falsch?
Komm von dem String Gedanken weg. Strings sind dafür völlig ungeeignet und je nach Delphi Version holst Du Dir damit jede Menge zusätzliche Effekte ins Boot, die Du so gar nicht möchtest. Benutz ein array of byte. Normalerweise benutzt man für die Modifikation von PE Dateien noch nicht mal irgendwelche Arrays, sondern den File Mapping Mechanismus von Windows.

Zitat von Linguini:
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...
Den Decryptor Stub packst Du Dir in ein Byte Array oder Record oder was auch immer, modifizierst die Adressen und schreibst ihn dann in die neu geschaffenen Platz innerhalb der "neuen" Executable.
Fridolin Walther
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#5

Re: Exe-Crypter

  Alt 22. Mai 2009, 15:23
Lade dir mal den CFF Explorer runter.
Anfangs hat es mir sehr geholfen. Es sagt einem viel über die Struktur / Aufbau
einer PE-Datei (exe/dll).

MfG
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Exe-Crypter

  Alt 22. Mai 2009, 15:49
Redet doch nicht immer um den Brei herum
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Exe-Crypter

  Alt 22. Mai 2009, 16:04
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.
Fridolin Walther
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#8

Re: Exe-Crypter

  Alt 22. Mai 2009, 16:15
@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:
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 );
Diese Funktion ließt jetzt eine Datei in ein Byte Array ein.
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 ?

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.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: Exe-Crypter

  Alt 22. Mai 2009, 17:45
Hier mal eine Beispielimplementation:
http://uall.cheat-project.com/execrypt/execrypt1.3.txt
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#10

Re: Exe-Crypter

  Alt 22. Mai 2009, 18:03
Hi brechi/ogc,

Zitat von brechi:
Hier mal eine Beispielimplementation:
http://uall.cheat-project.com/execrypt/execrypt1.3.txt
Hast Du eigentlich den 1.5 Source nochmal irgendwo gefunden? Warst doch auf der Suche im Februar...

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz