AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Exe-Header und Checksum-berechnung
Thema durchsuchen
Ansicht
Themen-Optionen

Exe-Header und Checksum-berechnung

Ein Thema von ShadowCaster · begonnen am 19. Mai 2003 · letzter Beitrag vom 21. Mai 2003
Antwort Antwort
Seite 1 von 2  1 2      
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#1

Exe-Header und Checksum-berechnung

  Alt 19. Mai 2003, 14:08
Hi Leute, ich hab mal eine Frage,

seid längerem versuche ich die Dateien, die von so nem blöden virus bei mir zu Hause infiziert wurden (Das System ist mittlerweile zu 100% clean, nur ein paar infizierte Dateien hab ich "aufgehoben" *grins*) wieder zu cleanen.

Bei den Dateien handelt es sich um Exe-Dateien. Jetzt sieht das folgendermaßen aus. Eine Exe besteht aus einem DOS-Header und einem PE-Header. Jeder der beiden Header hat eine Checksumme. Die des alten Dos-Headers wird offenbar nicht über CRC16 oder 32 berechnet und die des neuen auch nicht. Also die des Dos-Headers ist ein WORD-Wert und die des PE-Headers ist DWORD. Mich würde interessieren wie ich die Checksummen der beiden Header berechne. zu dem Zeitpunkt der Checksummenberechnugn kann ich ja nicht wissen wie das Checksummenfeld selbst aussieht, also kann ich eigentlich die Checksumme nicht berechnen wenn dieses Feld mit dazu benutzt wird. Also welche Teile der exe werden zur Berechnung der Dos-Checksumme und der PE-Checksumme gebraucht? Welche Formel gilt zur berechnung? Die checksummenfelder können ja schlecht zum Zeitpunkt der Berechnung selbst verwendet werden. Wie mach ich das also?

bin für jede Hilfe dankbar. Wenn ich die Lösung hab, muss ich nurnoch den Entry-Point des Viruses ermitteln, der schneinbar in jeder Exe variabel irgendwo in den infizierten Code zu springen scheint. Wenn ich diesen Entrypunkt ermittelt hab, brauch ich nurnoch den Adresspunkt, der wieder an die ursprüngliche Stelle der Exe springt. Sofern ich den hab, kann ich den PE-Header rekonstruieren.


Nachtrag:

Die Checkum des Dos-Exe-Headers wird wohl so berechnet, dass alle Word-Werte der Datei addiert werden. Dann werden sie abgeschnitten (auf 2 Byte Endgröße) und invertiert. Nur, woher soll ich vorher wissen wie große das WORD der Checksumme selbst ist? Wird das auch mit einberechnet? Gibt es da keinen Sourcecode für? Wie wird die PE-Checksumme berechnet? Ich brauch Antworten Ich hab inzwischen über 30 Anfragen mit insgesamt 250 PC's die mit dem Virus infiziert sind und sämtliche kommerziellen Virenremover bauen mist und machen nurnoch mehr am System kaputt. dazu zählt auch Norton.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#2
  Alt 19. Mai 2003, 14:43
hey... Leute, ich brauch Hilfe. Wenn ich jetzt einen Assembler hätte dann könnt ich mir mittlerweile schon 500 verschiedene Viren compilieren die ich zum Thema PE bei google gefunden habe aber das will ich net Will doch nur Hilfe!!! Bitte!!! Ich brauch das unbedingt,
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3
  Alt 19. Mai 2003, 16:36
Zitat von ShadowCaster:
könnt ich mir mittlerweile schon 500 verschiedene Viren compilieren die ich zum Thema PE bei google gefunden habe
Und durch den API Hook Code hast du auch noch die Verbreitungsmethode zur Hand. (AndyB = jbg)

Schau dir mal die vielen EXE-Formate an:
Wotsit
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 19. Mai 2003, 17:31
Zitat von ShadowCaster:
hey... Leute, ich brauch Hilfe. Wenn ich jetzt einen Assembler hätte dann könnt ich mir mittlerweile schon 500 verschiedene Viren compilieren die ich zum Thema PE bei google gefunden habe aber das will ich net Will doch nur Hilfe!!! Bitte!!! Ich brauch das unbedingt,
Du läßt uns aber schon etwas länger als eine halbe Stunde Reaktionszeit oder?

Und so lange wie du daran rummachst, kommt es auf 3 tage mehr oder weniger wohl auch nicht an.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#5
  Alt 19. Mai 2003, 17:36
Leute, ich wollte doch gar keinen Virus proggen. Das sollte ein Scherz sein. Ich will einen Virenscanner schreiben, der unter anderem einige selbstextrahierende Exe-Dateien meiner alten Sicherungen virenfrei macht und dass die dann noch ausführbar sind und nicht wie bei norton antivirus nicht mehr laufen. Naja, ich wüsste zugern wie ich die Checksummen berechne aber wotsit werd ich mir mal reinziehen. Danke schonmal dafür
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#6
  Alt 19. Mai 2003, 17:46
danke.. ich hab jetzt noch 5 neben meinen anderen 20 Abhandlungen über Exe udn PE und überall ist von Checksummen die Rede aber es wird nirgends genau erklärt (mit Beispiel) wie sie berechnet werden. Also wer noch mehr Links mit solchen Abhandlungen hat, nur her damit. Ich mach dann bald eine Linksammlung von oder werd mal ein Tut schreiben. Achja... das Tut wird nur nicht beinhalten, wie ich die beiden ach so unwichtigen Checksummen der Datei berechne. Es hängt ja nur... lediglich von diesen Checksummen ab ob das Programm ausführbar ist.

also Hilfe wäre angebracht (bitte!!) Irgendwann setz ich Kopfgeld für sowas aus oder ich spendier ein Kasten Bier
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7
  Alt 19. Mai 2003, 19:20
Wieso brauchst du eigentlich die CheckSum?
Denn: "CheckSum: Usually, this isn't filled in"


Zudem: Warum das Rad neu erfinden. Nimm doch einfach die Jedi Code Library. In der Unit JclPEImage ist die Klasse TJclPEImage, die neben dem Ermitteln der CheckSum auch deren Berechnung enthält.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#8
  Alt 20. Mai 2003, 09:45
Das Problem ist, dass die Checksumme für den PE header der Exe sehr wohl verwendet wird. Ich möchte gern die genaue Formel und nicht eine DX-Library einbinden, wo ich gar kein DX machen will (ist doch einleuchtend, oder?) also nehmen wir an wir wollten für folgende Datei eine Checksumme berechnen, wo ein Feld (DWORD) für die Checksumme mit drinnen ist:

DWORD Checksumme (4 Byte .. ist am Anfang 0)
und dann z.B. 80 Byte Datenstream der folgt.

so jetzt will ich eine Checksumme von der kompletten Datei erstellen, das schließt aber das Feld Checksumme mit ein, was ja noch 0 (NULL, NIL, Nada, nix) ist. Nehmen wir an, die Checksumme wäre F5DA4209. nur wenn wir das Feld Checksumme jetzt auf den wErt setzen, haben wir ein Problem. Die Datei wird ausgeführt und dann vom Kernel gecheckt. Jetzt stimmt der Wert der Checksumme aber nicht mehr. Verstanden? Das ist mein Problem beim PE-Header. Man kann nicht einfach CRC 32 auf die ganze Datei anwenden, wenn man gar nicht weiß, welche Sektionen und welch Bytes des PE-Headers oder der Datei mit in die Checksumme einbezogen werden.

also ich brauch keine DX-Libraries, mit denen man Computerspiele (eigentlich) programmiert, sondern einen Algo und ich muss wissen welche Bytes für die Checksumme benutzt werden. Die Checksumme des MZ-Headers kann ich (hoffentlich) jetzt richtig berechnen.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#9
  Alt 21. Mai 2003, 10:33
Na schön Leute, vielen Dank dennoch für eure Hilfe und Hilfsbereitschaft. Wenn ne win32-Anwendung keine Checksummen braucht, was offenbar der Fall ist.. dann werd ich das erstmal sein lassen, weil mich das Zeit kostet. Da hilft wohl einfach irgend wann mal ausprobieren, wenn ich Zeit und Lust hab.

Nebenher arbeite ich mich gerade in den Inline-Assembler von Delphi ein und wenn ich demnächst den Virus gescheit aus Exe-Dateien entfernen kann, werd ich glaub ich ein Programm schreiben, was Linkviren selbstständig aus Exe-Dateien entfernen kann (da alle Linkviren nach dem selben Muster arbeiten). Ich müsste nur eine Logik dazu einbauen. Parallel dazu werd ich wohl mal ein gescheites (deutsches) Tut über win23-Exes und deren Benutzung schreiben. Naja vielen Dank nochmal und bis dann
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10
  Alt 21. Mai 2003, 11:31
Zitat von ShadowCaster:
nicht eine DX-Library einbinden
Wie kommst du jetzt auf DirectX? Nur weil das Jedi-Projekt auch die DirectX Header übersetzt hat, heißt dass doch noch lange nicht, dass alle anderen Jedi-Projekte auf DirectX aufbauen. Die JCL hat, wie auch die JVCL, überhaupt nichts mit DirectX zu tun.
  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 07:45 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