Ein Freund von mir hat Malware von Facebook heruntergeladen, und ich bin gespannt, was sie bewirkt, ohne mich selbst zu infizieren. Ich weiß, dass Sie eine EXE-Datei nicht wirklich dekompilieren können, aber kann ich sie zumindest in Assembly anzeigen oder einen Debugger anhängen?
Bearbeiten, um zu sagen, dass es sich nicht um eine ausführbare .NET-Datei oder einen CLI-Header handelt.
debugging
winapi
assembly
decompiling
Swilliams
quelle
quelle
Antworten:
Mit einem Debugger können Sie die Programmassembly interaktiv durchlaufen.
Mit einem Disassembler können Sie die Programmassembly detaillierter anzeigen.
Mit einem Dekompiler können Sie ein Programm wieder in Teilquellcode umwandeln, vorausgesetzt, Sie wissen, in was es geschrieben wurde (was Sie mit kostenlosen Tools wie PEiD herausfinden können - wenn das Programm gepackt ist, müssen Sie es zuerst entpacken ODER Detect-it-Easy, wenn Sie PEiD nirgendwo finden können. DIE hat derzeit eine starke Entwickler-Community auf Github .
Debugger:
Disassembler:
Dekompilierer:
Einige verwandte Tools, die für Ihre Arbeit nützlich sein können, sind Ressourceneditoren wie ResourceHacker (kostenlos) und ein guter Hex-Editor wie Hex Workshop (kommerziell).
Wenn Sie eine Malware-Analyse durchführen (oder SICE verwenden) , empfehle ich außerdem von ganzem Herzen, alles in einer virtuellen Maschine auszuführen , nämlich VMware Workstation . Im Fall von SICE schützt es Ihr tatsächliches System vor BSODs, und im Fall von Malware schützt es Ihr tatsächliches System vor dem Zielprogramm. Informationen zur Malware-Analyse mit VMware finden Sie hier .
Persönlich rolle ich mit Olly, WinDbg & W32Dasm und einigen kleineren Hilfsprogrammen.
Denken Sie auch daran, dass das Zerlegen oder sogar Debuggen der Software anderer Leute normalerweise zumindest gegen die EULA verstößt :)
quelle
psoul's exzellente Post-Antworten auf Ihre Frage, damit ich seine gute Arbeit nicht wiederholen kann, aber ich denke, es würde helfen zu erklären, warum dies sofort eine vollkommen gültige, aber auch schrecklich dumme Frage ist. Immerhin ist dies ein Ort zum Lernen, oder?
Moderne Computerprogramme werden durch eine Reihe von Konvertierungen erzeugt, beginnend mit der Eingabe eines für Menschen lesbaren Textinhalts (als "Quellcode" bezeichnet) und endend mit einem computerlesbaren Befehlskörper (alternativ als "binär" oder "Maschine" bezeichnet) Code").
Die Art und Weise, wie ein Computer eine Reihe von Maschinencode-Anweisungen ausführt, ist letztendlich sehr einfach. Jede Aktion, die ein Prozessor ausführen kann (z. B. aus dem Speicher lesen, zwei Werte hinzufügen), wird durch einen numerischen Code dargestellt. Wenn ich Ihnen sagen würde, dass die Nummer 1 Schreien und die Nummer 2 Kichern bedeutet und dann Karten mit 1 oder 2 hochhalten würde, die erwarten, dass Sie entsprechend schreien oder kichern, würde ich das gleiche System verwenden, das ein Computer verwendet zu bedienen.
Eine Binärdatei ist nur ein Satz dieser Codes (normalerweise "Op-Codes" genannt) und der Informationen ("Argumente"), auf die die Op-Codes einwirken.
Assemblersprache ist jetzt eine Computersprache, in der jedes Befehlswort in der Sprache genau einen Operationscode auf dem Prozessor darstellt. Es gibt eine direkte 1: 1-Übersetzung zwischen einem Assembler-Befehl und einem Prozessor-Op-Code. Aus diesem Grund unterscheidet sich die Codierungsbaugruppe für einen x386-Prozessor von der Codierungsbaugruppe für einen ARM-Prozessor.
Die Demontage ist einfach so: Ein Programm liest die Binärdatei (den Maschinencode) durch, ersetzt die Operationscodes durch die entsprechenden Assembler-Befehle und gibt das Ergebnis als Textdatei aus. Es ist wichtig, das zu verstehen; Wenn Ihr Computer die Binärdatei lesen kann, können Sie die Binärdatei auch lesen, entweder manuell mit einer Op-Code-Tabelle in der Hand (ick) oder über einen Disassembler.
Disassembler haben einige neue Tricks und alles, aber es ist wichtig zu verstehen, dass ein Disassembler letztendlich ein Such- und Ersetzungsmechanismus ist. Deshalb bläst jede EULA, die dies verbietet, letztendlich heiße Luft. Sie können nicht sofort zulassen, dass der Computer die Programmdaten liest, und Sie können dem Computer auch nicht verbieten, die Programmdaten zu lesen.
(Versteh mich nicht falsch, es gab Versuche, dies zu tun. Sie funktionieren genauso gut wie DRM für Songdateien.)
Der Demontageansatz weist jedoch einige Einschränkungen auf. Variablennamen sind nicht vorhanden. So etwas gibt es in Ihrer CPU nicht. Bibliotheksaufrufe sind höllisch verwirrend und erfordern oft das Zerlegen weiterer Binärdateien. Und Montage ist unter den besten Bedingungen schwer zu lesen.
Die meisten professionellen Programmierer können die Assemblersprache nicht ohne Kopfschmerzen lesen. Für einen Amateur wird es einfach nicht passieren.
Wie auch immer, dies ist eine etwas beschönigte Erklärung, aber ich hoffe, es hilft. Jeder kann meine falschen Angaben korrigieren. Es ist eine Weile her. ;)
quelle
Gute Nachrichten. IDA Pro ist jetzt für seine älteren Versionen kostenlos: http://www.hex-rays.com/idapro/idadownfreeware.htm
quelle
Jeder anständige Debugger kann dies tun. Versuchen Sie es mit OllyDbg . (edit: das hat einen großartigen Disassembler, der sogar die Parameter für WinAPI-Aufrufe dekodiert!)
quelle
x64dbg
ist ein guter und Open Source Debugger, der aktiv gewartet wird.quelle
Schauen Sie sich IDA Pro an . Sie bieten eine Evaluierungsversion an, damit Sie sie ausprobieren können.
quelle
Wenn Sie nur herausfinden möchten, was eine Malware tut, ist es möglicherweise viel einfacher, sie unter dem kostenlosen Tool Process Monitor auszuführen das bei jedem Versuch, auf das Dateisystem, die Registrierung, die Ports usw. zuzugreifen, einen Bericht erstellt.
Die Verwendung einer virtuellen Maschine wie dem kostenlosen VMWare-Server ist für diese Art von Arbeit sehr hilfreich. Sie können ein "sauberes" Image erstellen und dann jedes Mal, wenn Sie die Malware ausführen, darauf zurückgreifen.
quelle
Möglicherweise erhalten Sie einige Informationen, die in der Assembly angezeigt werden. Ich denke jedoch, dass es am einfachsten ist, eine virtuelle Maschine zu starten und zu sehen, was sie tut. Stellen Sie sicher, dass Sie keine offenen Freigaben oder ähnliches haben, durch die es springen kann;)
quelle
Boomerang kann auch einen Besuch wert sein.
quelle
Was Sie wollen, ist eine Art von Software namens "Disassembler".
Schnelles Google liefert folgendes: Link
quelle
Ich kann nicht glauben, dass noch niemand etwas über den Immunitäts-Debugger gesagt hat .
Der Immunitäts-Debugger ist ein leistungsstarkes Tool zum Schreiben von Exploits, Analysieren von Malware und Reverse Engineering von Binärdateien. Es basierte ursprünglich auf dem Quellcode von Ollydbg 1.0, aber der Fehler bei der Namensänderung wurde behoben. Es verfügt über eine gut unterstützte Python-API für eine einfache Erweiterbarkeit, sodass Sie Ihre Python-Skripte schreiben können, um die Analyse zu erleichtern.
Es gibt auch einen guten, den Peter vom Corelan-Team geschrieben hat und der übrigens mona.py heißt, ein exzellentes Tool.
quelle
Wenn Sie das Programm ausführen möchten, um zu sehen, was es tut, ohne Ihren Computer zu infizieren, verwenden Sie es mit einer virtuellen Maschine wie VMWare oder Microsoft VPC oder einem Programm, das das Programm wie SandboxIE sandboxen kann
quelle
Wenn Sie keine Zeit haben, senden Sie die Malware an cwsandbox:
http://www.cwsandbox.org/
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
quelle
Sie können dotPeek verwenden, sehr gut zum Dekompilieren von exe-Dateien. Es ist frei.
https://www.jetbrains.com/decompiler/
quelle
Ich würde sagen, dass Ghidra ( https://ghidra-sre.org/ ) im Jahr 2019 einen Besuch wert ist. Es ist Open Source (und kostenlos) und verfügt über phänomenale Code-Analysefunktionen, einschließlich der Möglichkeit, den gesamten Weg zurück zu ziemlich lesbarem C-Code zu dekompilieren.
quelle
Die Explorer-Suite kann tun, was Sie wollen.
quelle