Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exen Crypten/Packen (https://www.delphipraxis.net/95704-exen-crypten-packen.html)

kevSTAR 11. Jul 2007 21:04


Exen Crypten/Packen
 
Hallo Leute!

Weiss jemand wie man eine exe mit delphi ein wenig packen bzw. Crypten kann und was z.B beim crypten an der exe verändert werden muss? ohne externe komponenten oder sonstwas

Luckie 11. Jul 2007 21:32

Re: Exen Crypten/Packen
 
Upx wäre ein Exe-Packer. Und es gibt auch nocheinen Exe-Crypter in Delphi gechrieben. Das würde ich allerdings nicht empfehlen, da manche Antivirenprogramme darauf allergisch reagieren. Was willst du denn damit bezwecken?

kevSTAR 11. Jul 2007 22:20

Re: Exen Crypten/Packen
 
mich intressiert nur die routine wie sowas geht, was genau man an der exe ändern muss etc., wieso spinnen antiviren programme dA?

HalloDu 11. Jul 2007 22:22

Re: Exen Crypten/Packen
 
Ich denke mal, dass die das sofort als potentielle Gefahr sehen, weil sich nicht erkennen können, ob die Anwendung was böses machen könnte. Daraus folgt für den Antvirushersteller natürlich erstmal Alarm schlagen.

kevSTAR 11. Jul 2007 22:48

Re: Exen Crypten/Packen
 
achso hm ja aber das ist mir erstmal egal will mal wissen wie so eine exe gepackt bzw. gecryptet wird

Rociel 11. Jul 2007 22:56

Re: Exen Crypten/Packen
 
http://de.wikipedia.org/wiki/UPX

ne zip dazu: http://upx.sourceforge.net/download/upx300w.zip

entpacken, cmd öffnen, in den ordner der upx.exe wechseln "upx" eingeben und erklärungen druchlesen, sollte keine beschreibung kommen dann "upx /?" oder "upx /help" weiß ich jetzt nicht genau, is schon länger her ^^

Luckie 11. Jul 2007 23:06

Re: Exen Crypten/Packen
 
UPX ist ausserdem OpenSource. ;)

Zacherl 12. Jul 2007 00:32

Re: Exen Crypten/Packen
 
Normalerweise wird die .code Section der PE Datei gecryptet und ein decrypter in ASM in die EXE geschrieben. Der EP wird auf das Offset an dem sich der Decrypter befindet festgelegt, welcher die .code Section wieder decryptet und zum OEP springt. Dann wird die EXE ganz normal ausgeführt ..

@Luckie: Der EXE-Crypter .. findet man dazu die Sourcen irgendwo?

Dunkel 12. Jul 2007 02:44

Re: Exen Crypten/Packen
 
Ich bin zwar nicht Luckie, aufgrund des gleichen Vornamens erlaube ich mir trotzdem den Link zum Sourcecode zu posten:

klick mich (zu finden unter Download).

btw. das Schreiben dieses Posts hat mehr Zeit in Anspruch genommen als die Suche via Google... :roll:

sirius 12. Jul 2007 07:51

Re: Exen Crypten/Packen
 
Zitat:

Zitat von Zacherl
@Luckie: Der EXE-Crypter .. findet man dazu die Sourcen irgendwo?

Auf meinem Rechner z.B. :mrgreen:
Aber durchblicken durch den Code ist da ganz schwer (auch wenn ich zum Testen nur mit XOR verschlüsselt habe).

Zacherl 12. Jul 2007 10:08

Re: Exen Crypten/Packen
 
Würde mich interessieren .. kannst du mir das evtl. per PN zukommen lassen oder hier posten? Wegen durchblicken ist denke ich kein Problem .. hab mich wie gesagt grade erst mit PE Dateien, etc beschäftigt.

calculon 12. Jul 2007 10:24

Re: Exen Crypten/Packen
 
Das ist vielleicht ein interessanter Link für dich. Ist auch OpenSource.

Gruß

Calculon
--

sirius 12. Jul 2007 10:50

Re: Exen Crypten/Packen
 
Zitat:

Zitat von Zacherl
Würde mich interessieren .. kannst du mir das evtl. per PN zukommen lassen oder hier posten? Wegen durchblicken ist denke ich kein Problem .. hab mich wie gesagt grade erst mit PE Dateien, etc beschäftigt.

Mit PE vielleicht schon. Aber noch nicht mit meinen Programmierstil, wenn ich grad am Testen und probieren bin :mrgreen: ...und hinterher allen Müll kreuz und quer im Code liegen lasse :angel2:

Mach ich, dazu muss ich zu Hause erstmal an meinen Testrechner kommen (und vor allem erstmal nach Hause kommen)! Heute abend vielleicht.

Zacherl 12. Jul 2007 13:01

Re: Exen Crypten/Packen
 
Cool Vielen Dank schonmal :D

@calculon: Das scheint eher eine Stub zu sein, an die die richtige EXE angehangen wird. Sowas ist verhältnissmäßig einfach finde ich, aber mit richtigem Ändern der PE Datei, etc ist schon komplizierter :P

Meflin 12. Jul 2007 13:03

Re: Exen Crypten/Packen
 
*auchinteresseanmeld*

Also poste es bitte hier oder PMs mir auch :)


brechi 12. Jul 2007 13:37

Re: Exen Crypten/Packen
 
http://uall.cheat-project.com/execrypt/execrypt1.3.txt

Wenn auch nicht wirklich schön strukturiert :)

stoxx 12. Jul 2007 13:53

Re: Exen Crypten/Packen
 
darf ich mal fragen, was genau es für einen Sinn macht, die exe zu crypten?
wenn ich das richtig verstanden habe, liegt sie doch dann im RAM sowieso wieder decryptet vor?
Welche Vorteile hat also das Verfahren?

Meflin 12. Jul 2007 13:56

Re: Exen Crypten/Packen
 
Du kannst zum Beispiel eine Anwendung an eine Smartcard oder irgendein anderes Dongle koppeln und so dessen Ausführung verhindern. Auf der Card befindet sich der Key zum Decrypten. Hast du die Card nicht, ist es unmöglich, die EXE auszuführen.


sirius 12. Jul 2007 17:48

Re: Exen Crypten/Packen
 
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:

Zitat von Zacherl
Cool Vielen Dank schonmal :D

@calculon: Das scheint eher eine Stub zu sein, an die die richtige EXE angehangen wird. Sowas ist verhältnissmäßig einfach finde ich, aber mit richtigem Ändern der PE Datei, etc ist schon komplizierter :P

Zitat:

Zitat von Meflin
*auchinteresseanmeld*

Also poste es bitte hier oder PMs mir auch :)

Ich mache jetzt nicht tausend PMNs

also brechis Datei sieht deutlich sortierter aus als Meine. Vor allem nutzt er einen ordentlichen Algo zum verschlüsseln. Aber ich wollt ja nur mal testen, ob es generell geht. die Verschlüsselung zu ändern ist ja kein Ding.

Units
U_TestPE - die, die alles organisiert (inkl. Formular)
ReadPEHeader - zum lesen, analysieren und auch gleich verändern der Exe
passwordwindow - Record, der in die Exe geschrieben wird

Viel Spaß und "Nur Mut!"


Edit: Ich wollte noch schreiben, was eigentlich prinzipiell gemacht wird. (so weit ich mich erinnere)
Da ich damals keinen Mut hatte eine neue Section einzufügen, habe ich einfach den code ans Ende der Section gehangt, die im Speicher ganz hinten landet (damit ich genügend Platz habe). Da dies (in meinem TestFall) eine Data Section war, kam noch ein bisschen Code in den ungenutzten Teil der itext-Section. Dieser lädt zu Beginn einfach den Code aus der Data-Section in einen anderen Speicherbereich und führt ihn dort aus.
Verschlüsselt sind die ursprünglichen text und itext-Sections sowie die jmp-Addresse am "Ende" meines injezierten Codes, damit man den EP nicht sieht.
Nachdem das Passwort eingegeben wird, wird es auf zwei Arten verifiziert. zuerst wird an dem so entschlüsselten EP geschaut ob die originalen ersten 4 Bytes auftauchen, erst dann wird versucht den entschlüsselten Code zu starten. Dadurch stürzt das Programm bei einem Tippfehler im Passwort nicht gleich ab und man darf es nochmal versuchen.
PS: Das die Unit Windows die ganzen records zum Lesen des PE-Headers schon bereithält ist mir erst hinterher aufgefallen.

stoxx 13. Aug 2011 12:39

AW: Re: Exen Crypten/Packen
 
Zitat:

Zitat von brechi (Beitrag 649720)
http://uall.cheat-project.com/execrypt/execrypt1.3.txt

Wenn auch nicht wirklich schön strukturiert :)


ich hab das mal ausprobiert.

Gibts denn nicht eine meinetwegen etwas wenigere Variante, die exe Datei zu verschlüsseln?
Um sie wenigstens erstmal vor Hobbyprogrammierern und Disassemblern zu schützen?
Weil wenn ich eine Exe damit verschlüssel, kommen angebliche eine Menge Trojaner zum Vorschein :-)

http://www.virustotal.com/file-scan/...f1c-1313235033

Bernhard Geyer 13. Aug 2011 13:01

AW: Re: Exen Crypten/Packen
 
Zitat:

Zitat von stoxx (Beitrag 1116605)
Weil wenn ich eine Exe damit verschlüssel, kommen angebliche eine Menge Trojaner zum Vorschein :-)
http://www.virustotal.com/file-scan/...f1c-1313235033

Wird bei jeder ander Lösung genauso kommen können, denn Verschlüsselung mag für manche Virenprogramme ein Indiz auf Trojaner sein (evtl. gibt es einige die verschlüsselt im Umlauf sind).

Was willst du eigentlich erreichen? Was denkst du das in deiner Exe so geheimnisvoll wichtig wäre das man sie verschlüsseln müsst. Evtl. reichen ja auch bordmittel aus die relevanten teile zu verschleiern.

stoxx 13. Aug 2011 13:06

AW: Re: Exen Crypten/Packen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1116609)
Was willst du eigentlich erreichen? Was denkst du das in deiner Exe so geheimnisvoll wichtig wäre das man sie verschlüsseln müsst. Evtl. reichen ja auch bordmittel aus die relevanten teile zu verschleiern.

ich hatte das Übliche vor. Kopierschutz und Schutz vor Veränderung der exe.
Gerade das, was das Verfahren interessant macht, scheinen eben dann wohl genau die Methoden zu sein, die Virenprogramme als unangenehm empfinden .. hmm

jaenicke 13. Aug 2011 13:26

AW: Re: Exen Crypten/Packen
 
Zitat:

Zitat von stoxx (Beitrag 1116610)
Schutz vor Veränderung der exe.

Dafür reicht es die Exe zu signieren, dann kannst du (und Windows selbst) das prüfen.

himitsu 13. Aug 2011 13:38

AW: Exen Crypten/Packen
 
Trojaner...

Jupp, ein ordentlicher Virenscanner sucht nicht nur nach Signaturen von Trojanern, Viren usw.

Hier wird ja der Programmstart verändert und Daten verschlüsselt.
Da isr es ja kein Wunder und vollkommen Zurecht, daß sich die Scanner dann beschweren.

Bei bekannten , bzw. weit verbreiteten EXE-Packern wird entpackt und dann der richtige Inhalt geprüft, darum kommt dort auch seltener eine Meldung.
Signierte Anwendungen können eventuell schonmal vom Scanner durchgelassen werden, wenn der Scanner sie dennoch für "vertrauenswürdig" hält.


PS: Ohne die EXE zu verschlüsseln, könntest du dir selber eine Signatur reinbauen, in welcher z.B. ein Hash der EXE verbaut ist, dann sollten die Scanner ebenfalls nicht meckern.

stoxx 13. Aug 2011 14:13

AW: Re: Exen Crypten/Packen
 
Zitat:

Zitat von jaenicke (Beitrag 1116613)
Zitat:

Zitat von stoxx (Beitrag 1116610)
Schutz vor Veränderung der exe.

Dafür reicht es die Exe zu signieren, dann kannst du (und Windows selbst) das prüfen.


Hallo jaenicke,

das war nicht ganz das, was ich suchte, das schützt ja die Exe trotzdem nicht davor, dass sie jemand patcht.

Himitsu, ja .. einen CRC zur ÜBerprüfung hatte ich auch schon, aber ein "jnz" kann man dann ja trotzdem noch relativ einfach mit Boardmitteln ändern.

Luckie 13. Aug 2011 14:25

AW: Exen Crypten/Packen
 
Dann sag uns doch mal, was an deinem Programm so schützens würdig ist? Sollte es Shareware sein, dann ist es einfacher gewisse Features per Compiler Schalter erst gra nicht in die Exe der Demoversion zu kompilieren.

Namenloser 13. Aug 2011 14:32

AW: Exen Crypten/Packen
 
Ich denke eine Hash-Überprüfung ist der beste Kompromiss aus Aufwand und Wirkung.

Wenn du es Crackern etwas schwieriger machen willst, pack die Hash-Überprüfung an ungewöhnliche Stellen im Code, und am besten an mehrere Stellen (und zwar möglichst, indem du den Code an diese Stellen kopierst und nicht per Funktionsaufruf - z.B. per Include). Am besten ein paar verschiedene Überprüfungsroutinen verwenden und eventuell ein paar verdächtige Fake-Routinen, die nie aufgerufen werden. Außerdem die Sprungadressen wenn möglich nicht direkt als „Klartext“ in den Code schreiben, sondern irgendwie zur Laufzeit berechnen, sodass man nicht einfach nach ihnen suchen kann und sofort die Überprüfungsroutine findet. Das zusammen sollte hoffentlich aufwändig genug sein, dass der Wald-und-Wiesen-Cracker die Lust verliert.

jaenicke 13. Aug 2011 14:33

AW: Re: Exen Crypten/Packen
 
Zitat:

Zitat von stoxx (Beitrag 1116620)
das war nicht ganz das, was ich suchte, das schützt ja die Exe trotzdem nicht davor, dass sie jemand patcht.

Doch, wenn du selbst beim Starten und während der Programmlaufzeit die Signatur überprüfst und sonst den Start usw. abbrichst. Das lässt sich natürlich auch wieder unterwandern, aber das gilt ja eh immer...

Luckie 13. Aug 2011 15:06

AW: Exen Crypten/Packen
 
Zitat:

Zitat von NamenLozer (Beitrag 1116623)
Wenn du es Crackern etwas schwieriger machen willst, pack die Hash-Überprüfung an ungewöhnliche Stellen im Code, und am besten an mehrere Stellen (und zwar möglichst, indem du den Code an diese Stellen kopierst und nicht per Funktionsaufruf - z.B. per Include). Am besten ein paar verschiedene Überprüfungsroutinen verwenden und eventuell ein paar verdächtige Fake-Routinen, die nie aufgerufen werden. Außerdem die Sprungadressen wenn möglich nicht direkt als „Klartext“ in den Code schreiben, sondern irgendwie zur Laufzeit berechnen, sodass man nicht einfach nach ihnen suchen kann und sofort die Überprüfungsroutine findet. Das zusammen sollte hoffentlich aufwändig genug sein, dass der Wald-und-Wiesen-Cracker die Lust verliert.

Und wenn du das dann nach einem halben Jahr geschafft hast, will niemand mehr dein Programm, weil es mittlerweile ein besseres als Freeware gibt.

Zacherl 13. Aug 2011 16:27

AW: Exen Crypten/Packen
 
Muss ich Luckie zustimmen. Diese Art des "Schutzes" bringt erstmal relativ wenig bis gar nichts und ist außerdem ein enormer Aufwand für dich. Das Programm zu dumpen und eventuelle CRC Checks zu patchen ist selbst für Leute wie mich, die sich nur mal am Rande mit Cracking beschäftigt haben eine Sache von wenigen Minuten.

Wenn du ein wenig Sicherheit haben willst, musst du schon auf kommerzielle Lösungen wie Themida oder VMProtect zurückgreifen. Da beißen sich selbst Top Cracker die Zähne dran aus. Auch wenn sie es früher oder später schaffen, werden sie es sich gut überlegen, ob sich der Aufwand für ein einfaches, vermutlich eher unbekanntes, Programm lohnt.

Namenloser 13. Aug 2011 16:29

AW: Exen Crypten/Packen
 
Zitat:

Zitat von Zacherl (Beitrag 1116637)
Wenn du ein wenig Sicherheit haben willst, musst du schon auf kommerzielle Lösungen wie Themida oder VMProtect zurückgreifen.

Die kommerziellen Lösungen sind eh alle längst geknackt...

himitsu 13. Aug 2011 16:42

AW: Exen Crypten/Packen
 
Jupp, da diese ja auch in "wichtigeren" Programmen verbaut hat, hat sich auch jemand die Mühe gemacht es zu häcken und es auch regelmäßig erneut zu hacken.

Einmal gehackt, kann man damit natürlich auch weniger wichtige/bekannte Programme knacken. :stupid:
Was denkt ihr denn, warum wirklich "bekannte" Programme sowas nicht einsetzen, sondern sich jeweils was Eigenes entwickeln?

Zacherl 13. Aug 2011 20:14

AW: Exen Crypten/Packen
 
Also ich kenne eine Menge Programme, welche auf Themida / Winlicense zurückgreifen. Einmal geknackt, immer geknackt ist hier nicht richtig. Diese Programme konvertieren die normalen Opcodes in VM Bytecode Instruktionen und führen sie in einer internen VM aus. So einen VM Code erstmal wieder in normale Opcodes zu konvertieren ist eine Heidenarbeit, welche in den meisten Fällen per Hand erledigt werden muss.

Ist auf jeden Fall um den geschätzten Faktor 10000 sicherer, als eine eigene Implementation, wie man sie hier in Ansätzen findet.

Ich kenne persönlich einen wirklich versierten Reverser / Cracker. Für den sind die meisten Programme in ein Paar Minuten geknackt. Habe ihm mal per TeamViewer zugeguckt und konnte einfach nicht anders, als mit offenen Mund vorm Bildschirm zu sitzen. :D Aber selbst er sagt, dass Themida beispielsweise, durch die fast ausschließlich dynamischen Komponenten, ein derart hoher Aufwand ist, dass er sich es 3x überlegt, bevor er seine Arbeit darein investiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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