AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Simpler PE-Crypter
Tutorial durchsuchen
Ansicht
Themen-Optionen

Simpler PE-Crypter

Ein Tutorial von mr_emre_d · begonnen am 20. Feb 2009 · letzter Beitrag vom 29. Jun 2011
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Simpler PE-Crypter

  Alt 28. Jun 2011, 10:45
Da die ImageBase von Windows PE Loader geändert werden kann und somit die Image an einem ganz anderen Ort liegt
Was aber bei einer Exe sehr unwahrscheinlich ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Simpler PE-Crypter

  Alt 28. Jun 2011, 11:03
Ja aber halt für alle Fälle...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Xen

Registriert seit: 8. Aug 2008
9 Beiträge
 
#3

AW: Simpler PE-Crypter

  Alt 28. Jun 2011, 23:35
@himitsu
Wow, der Code fürs vorwärts entschlüsseln ist ja nochmal deutlich kürzer!

Zum Rückwärtscode:
Kann man das denn überhaupt so schreiben???
Code:
MOV ecx, [eax-1] //Byte Davor speichern
XOR [eax], ecx //Mit ECX entschlüsseln
[eax-1] Sieht irgendwie so "Delphisch" aus. Ich hab gedacht jede Arithmetik Operation muss man extra angeben (w.z.B. DEC oder INC)



@Aphton:
1. Ja ich verwende die relative Andressen. Also immer ImgBase + VAddr für den Start, und ImgBase + VAddr + VSize fürs Ende.
Also exakt wie im Tutorial beschrieben.

2. Zum Cave. Ja ... der wird mit 100% Sicherheit hinter das letzte beschriebene SectionByte gesetzt. Also wirklich da wo vie V.Size endet.
Das ganze habe ich mehrmals im Hex-Editor überprüft.


Um zu überprüfen das es am ASM Code liegen muss, habe ich das Ganze (also En/Decrypter) in die Unit aus dem Tutorial verfrachtet.
Mit selben Ergebnis: Exe Kaput bei meinem ASM Code. Exe heil bei mr_emre_d's Original ASM Code.



Ist denn der ASM Code wie ich ihn gepostet habe von der Logic u. Syntaktik korrekt?
Da der hier angebotene ASM Crashkurs nicht allzuumfangreich ist habe ich mir vieles einfach zusammen gereimt.
War ich denn richtig der Annahme das "[eax]" auf den Inhalt der Adresse die in eax selbst gespeichet ist zugreift?


Was mir Wahrscheinlich extrem helfen würde wäre den decrypting Prozess in der "Ziel-Exe" direkt im Ram verfolgen zu können.
Wie kann ich das bewerkstelligen? Kann ich für sowas den Delphi Debugger nehmen oder lieber einen externen wie OllyDBG?


Schonmal vielen lieben Dank für die Hilfe!

Geändert von Xen (28. Jun 2011 um 23:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Simpler PE-Crypter

  Alt 28. Jun 2011, 23:53
Zitat:
Ist denn der ASM Code wie ich ihn gepostet habe von der Logic u. Syntaktik korrekt?
Da der hier angebotene ASM Crashkurs nicht allzuumfangreich ist habe ich mir vieles einfach zusammen gereimt.
Falls ich morgen Lust habe, helfe ich dir. Bin momentan zu Müde dafür.

Zitat:
War ich denn richtig der Annahme das "[eax]" auf den Inhalt der Adresse die in eax selbst gespeichet ist zugreift?
Ja

Zitat:
Was mir Wahrscheinlich extrem helfen würde wäre den decrypting Prozess in der "Ziel-Exe" direkt im Ram verfolgen zu können.
Wie kann ich das bewerkstelligen? Kann ich für sowas den Delphi Debugger nehmen oder lieber einen externen wie OllyDBG?
Codestelle markieren (Breakpoint setzen) und dann in den CPU - Modus/Ansicht wechseln (STRG+SHIFT+C) und per F7 Stück für Stück durchsteppen!
Ollydbg. wäre natürlich noch angenehmer, aber da muss man zuerst einmal die Stelle finden, was für Anfänger nicht so einfach ist.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (29. Jun 2011 um 00:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#5

AW: Simpler PE-Crypter

  Alt 29. Jun 2011, 00:20
Zum Rückwärtscode:
Kann man das denn überhaupt so schreiben???
Aber sicher doch.

Schau dir einfach mal den erzeugten Maschienencode an

Die ASM-Befehle verstehen hierbei einige verschiedene Offsets, aber meistens nur in kleineren Bereichen und in Schritten von Zweierpotenzen
und ist auch nicht bei allen Registern gleich. (wenn was nicht geht, dann wird es der Debugger schon bemängeln)

PS: Der Delphi-InlineASM-Code muß ja auch irgendwie in ein Format gebracht werden, welches Intel, AMD und Co. verstehen. Da kann Delphi auch nicht sein eigenes Süppchen kochen, sondern muß sich an die Regeln halten. (ein ASM-Befehl im Code wird in einen ASM-Befehl für die CPU umgewandelt ... da wird nix zusammengeschustert)


Zitat:
Codestelle markieren (Breakpoint setzen) und dann in den CPU - Modus/Ansicht wechseln (STRG+SHIFT+C) und per F7 Stück für Stück durchsteppen!
Ollydbg. wäre natürlich noch angenehmer, aber da muss man zuerst einmal die Stelle finden, was für Anfänger nicht so einfach ist.
Wobei es in Delphi garnicht so einfach ist, einen Bootloader zu debuggen. (sowas war ja auch nie vorgesehn)
Drum ja der Tipp das erstmal als Funktion zu testen, wo man den Haltepunkt direkt im Quellcode setzen kann.
Dort könnte man sogar in Quellcode debuggen und muß nicht unbedingt in die CPU-Ansicht.
Überwachte Ausdrücke lassen sich auch auf Register setzen oder zum Anzeigen von Speicherbereichen nutzen.

Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Jun 2011 um 00:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Simpler PE-Crypter

  Alt 29. Jun 2011, 12:34
Du hast vollkommen Recht, Himitsu.

@Xen: Mach zuerst mal das, was er vorgeschlagen hat!
Packe deine Ver- und Entschlüsselungsroutine in Proceduren und wende sie an einen Datenblock an. Wenn gilt:
Entschlüsseln(Verschlüsseln(Datenblock)) = Datenblock
dann ist alles in Ordnung!

Edit: Anschließend, falls es nicht daran lag und die Exe immernoch nicht funktioniert, könntest du mal die Exe hier hochladen und ich schaus mir genauer an...
Ansonsten müsstest du halt noch an deinem "Stub" rumpfeilen!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:22 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