Veröffentlicht am Schreiben Sie einen Kommentar

Was ist ein Disassembly Tool?

Ein Disassembler ist ein Computerprogramm, das binäre Dateien analysiert und den darin enthaltenen Maschinencode in menschenlesbaren Assembler-Code umwandelt. Im Gegensatz zum Compiler, der Quellcode in Maschinencode übersetzt, arbeitet ein Disassembler in die entgegengesetzte Richtung und wandelt Maschinencode in Assembler-Code zurück.

Ein Disassembler wird oft verwendet, um ein besseres Verständnis für den Maschinencode eines Programms zu gewinnen oder um Schwachstellen in einem Programm zu identifizieren, indem der Assembler-Code analysiert wird. Dies ist besonders nützlich für die Fehlerbehebung, Reverse Engineering oder für die Analyse von Malware.

Disassembler-Tools werden in der Regel für die Analyse von Programmen auf Prozessoren und Betriebssystemen wie Intel, ARM, PowerPC und anderen eingesetzt. Einige bekannte Disassembler-Tools sind IDA Pro, OllyDbg, Hopper und Ghidra.

Es ist wichtig zu beachten, dass ein Disassembler nicht in der Lage ist, den ursprünglichen Quellcode eines Programms wiederherzustellen, da Informationen wie Variablennamen und Kommentare normalerweise im Kompilierungsprozess verloren gehen. Daher wird ein Disassembler in der Regel nur für spezielle Zwecke verwendet und nicht als Standardwerkzeug für die Softwareentwicklung eingesetzt.

Darüber hinaus kann ein Disassembler auch dazu verwendet werden, den Ablauf eines Programms zu verstehen und möglicherweise zu optimieren. Ein Disassembler kann beispielsweise dabei helfen, ineffiziente Codeblöcke in einem Programm zu identifizieren und zu optimieren, um die Leistung des Programms zu verbessern.

Ein weiterer Einsatzbereich von Disassembler-Tools ist die Sicherheitsforschung. Sicherheitsforscher können Disassembler verwenden, um Schwachstellen in einer Anwendung oder einem Betriebssystem zu identifizieren und zu untersuchen, wie eine Malware funktioniert. Dies kann dazu beitragen, Sicherheitslücken in einer Anwendung oder einem Betriebssystem zu schließen und bösartige Software effektiver zu erkennen und zu entfernen.

Es gibt auch spezialisierte Disassembler-Tools, die für die Analyse von Firmware oder eingebetteten Systemen entwickelt wurden. Diese Tools können verwendet werden, um den Code von Geräten wie Mobiltelefonen, Routern oder industriellen Steuerungssystemen zu untersuchen. Die Analyse dieser Systeme kann dazu beitragen, Sicherheitslücken zu finden oder das Verständnis der Funktionsweise eines Systems zu verbessern.

Insgesamt ist ein Disassembler ein leistungsfähiges Tool, das in verschiedenen Bereichen eingesetzt werden kann. Obwohl es einige Einschränkungen gibt, ist ein Disassembler ein unverzichtbares Werkzeug für die Fehlerbehebung, Sicherheitsforschung und Reverse Engineering.

Es ist jedoch wichtig zu beachten, dass die Verwendung von Disassembler-Tools in einigen Fällen rechtlich fragwürdig sein kann. In einigen Ländern können bestimmte Arten von Reverse Engineering als illegal angesehen werden, insbesondere wenn sie dazu verwendet werden, proprietäre Software zu kopieren oder zu modifizieren. Daher ist es wichtig, die lokalen Gesetze und Vorschriften zu berücksichtigen und sicherzustellen, dass die Verwendung von Disassembler-Tools im Rahmen des Gesetzes erfolgt.

Darüber hinaus kann die Verwendung von Disassembler-Tools schwierig sein, da der Assembler-Code oft schwer zu lesen und zu verstehen ist. Es erfordert oft viel Erfahrung und Fachwissen, um den Code effektiv zu analysieren und zu verstehen. Daher werden Disassembler-Tools in der Regel von erfahrenen Entwicklern oder Sicherheitsforschern verwendet.

Insgesamt ist ein Disassembler ein leistungsstarkes Werkzeug, das bei der Fehlerbehebung, Sicherheitsforschung und Reverse Engineering eingesetzt werden kann. Es ist jedoch wichtig, die lokalen Gesetze und Vorschriften zu berücksichtigen und sicherzustellen, dass die Verwendung von Disassembler-Tools im Rahmen des Gesetzes erfolgt.

Liste von Disassembler Tools

Es gibt eine Vielzahl von Disassembler-Tools, die für verschiedene Plattformen und Zwecke entwickelt wurden. Hier sind einige der bekanntesten Disassembler-Tools:

  1. IDA Pro: IDA Pro ist ein leistungsfähiges und weit verbreitetes Disassembler-Tool, das von Hex-Rays entwickelt wurde. Es unterstützt eine Vielzahl von Prozessoren und Betriebssystemen und verfügt über erweiterte Funktionen wie die automatische Analyse von Code und die Visualisierung von Abhängigkeiten zwischen Code und Daten.
  2. OllyDbg: OllyDbg ist ein Disassembler-Tool, das sich auf die Analyse von Windows-Software spezialisiert hat. Es verfügt über eine benutzerfreundliche grafische Benutzeroberfläche und erweiterte Funktionen wie das Einsetzen von Breakpoints, die Überwachung von Speicher- und Registerinhalten sowie die Möglichkeit, Patches auf den Code anzuwenden.
  3. Ghidra: Ghidra ist ein Disassembler-Tool, das von der National Security Agency (NSA) entwickelt wurde und als Open-Source-Software verfügbar ist. Es unterstützt eine Vielzahl von Prozessoren und Betriebssystemen und verfügt über erweiterte Funktionen wie die automatische Analyse von Code und die Möglichkeit, benutzerdefinierte Skripte zu schreiben.
  4. Hopper: Hopper ist ein Disassembler-Tool, das für die Analyse von Mach-O-Dateien auf macOS entwickelt wurde. Es verfügt über eine benutzerfreundliche grafische Benutzeroberfläche und erweiterte Funktionen wie die Möglichkeit, den Code in Echtzeit zu analysieren und zu debuggen.
  5. radare2: radare2 ist ein Disassembler-Tool, das als Open-Source-Software verfügbar ist und eine Vielzahl von Prozessoren und Betriebssystemen unterstützt. Es verfügt über erweiterte Funktionen wie die Möglichkeit, den Code in Echtzeit zu analysieren und zu debuggen sowie die Möglichkeit, benutzerdefinierte Skripte zu schreiben.
  1. Binary Ninja: Binary Ninja ist ein kommerzielles Disassembler-Tool, das von Vector 35 entwickelt wurde. Es unterstützt eine Vielzahl von Prozessoren und Betriebssystemen und verfügt über eine benutzerfreundliche grafische Benutzeroberfläche sowie erweiterte Funktionen wie die Möglichkeit, den Code in Echtzeit zu analysieren und zu debuggen.
  2. JEB Decompiler: JEB Decompiler ist ein kommerzielles Disassembler-Tool, das von PNF Software entwickelt wurde. Es ist speziell auf die Analyse von Android-Apps ausgerichtet und verfügt über erweiterte Funktionen wie die Dekompilierung von Java-Code und die Möglichkeit, den Code in Echtzeit zu analysieren und zu debuggen.
  3. Angr: Angr ist ein Open-Source-Disassembler-Tool, das speziell für die automatische Analyse von Binärdateien entwickelt wurde. Es verfügt über erweiterte Funktionen wie die Möglichkeit, automatisch Exploits zu generieren und Sicherheitslücken in Binärdateien zu identifizieren.
  4. X64dbg: X64dbg ist ein Open-Source-Disassembler-Tool, das speziell für die Analyse von Windows-Software entwickelt wurde. Es verfügt über eine benutzerfreundliche grafische Benutzeroberfläche sowie erweiterte Funktionen wie das Einsetzen von Breakpoints und das Debugging von Multi-Threading-Software.
  5. Cutter: Cutter ist ein Open-Source-Disassembler-Tool, das auf der grafischen Benutzeroberfläche von radare2 basiert. Es unterstützt eine Vielzahl von Prozessoren und Betriebssystemen und verfügt über erweiterte Funktionen wie die Möglichkeit, den Code in Echtzeit zu analysieren und zu debuggen sowie die Möglichkeit, benutzerdefinierte Skripte zu schreiben.
Veröffentlicht am Schreiben Sie einen Kommentar

Windows 10: Microsoft veröffentlicht erste Preview von Project Reunion

Die ist auf GitHub und über NuGet erhältlich. Sie bildet die Grundlage für die Runtime von Project Reunion. Neu ist auch das Tool DirectWriteCore für Text-Layount und -Rendering.

Weiterlesen auf ZDnet

Veröffentlicht am Schreiben Sie einen Kommentar

VS-Code-Extension: Zahlungsplattform Stripe rückt näher an den Code-Editor

Stripe hat eine Erweiterung für Visual Studio Code angekündigt. Die Integration der Zahlungsplattform soll damit  deutlich angenehmer für Entwickler werden.

Die Zahlungsplattform Stripe bietet APIs für die Integration gängiger Zahlungssysteme wie zum Beispiel Shopify, WooCommerce oder NetSuite für verschiedenste Techstacks wie React, PHP, .NET oder iOS. Die neue Extension für Microsofts Code-Editor soll es Entwicklern ermöglichen, innerhalb von VS Code Beispielcode zu generieren, API-Request-Logs abzurufen und Events weiterzuleiten. Ein neues …

Weiterlesen auf T3N

Veröffentlicht am Schreiben Sie einen Kommentar

CSS4 Selector Level 4

Hallo liebe Leser,

heute habe ich mich mit dem der Veröffentlichung von CSS Selektoren Level 4 beschäftigt (“Selectors Level 4 Editor’s Draft, 28 March 2019”).

Ich wollte in Erfahrung bringen wie weit die Entwicklung von CSS in den Browsern fortgeschritten ist, dafür habe ich einen kleinen Browserbenchmark gemacht um die Browser zu vergleichen.

Ihr könnt den Browsertest für CSS Selector Level 4 hier erreichen. Getestet wurden alle derzeit aktuellen Browser:

Firefox 66.0.3

– 44% CSS4 derzeit

2019-04-24 18_56_11-Window.png

Chrome 73.0.3683.103

– 50% CSS4 derzeit

2019-04-24 18_56_38-Window.png

Opera 60.0.3255.59

2019-04-24 19_10_04-Window.png

Edge 18 (Microsoft EdgeHTML 18.18362)

– 26% derzeit

2019-04-24 18_56_00-Window.png

Firefox Entwicklervorschau Version 67.0b13

– 44% derzeit

2019-04-24 19_32_50-Window.png

Wer sich für das neue CSS-Level4 interessiert:

 CSS4 in den Startlöchern: Das können die neuen Selektoren

– Kurze Übersicht über CSS Level 4 Selektoren

Veröffentlicht am Schreiben Sie einen Kommentar

ILSPY .NET Decompiler für C# und VB.NET

Hallo liebe Leser,
heute möchte ich euch ein bis heute aktives Projekt eines .NET Decompilers vorstellen (Juni 2011 – April 2019). Dieser Decompiler kann mit *.EXE und *.DLL Dateien von .NET C# (CSharp) und VB.NET umgehen und lesbaren Quellcode generieren.

Ein Dekompilierer ist ein Computerprogramm, das aus Maschinen- oder Objektcode für den Menschen wieder lesbaren Quelltext in einer Hochsprache erzeugt. Er versucht, den Vorgang des Kompilierens umzukehren.

.NET Decompiler für VB.NET und C#

n dem Beispiel auf dem Foto (§ 202c freundliches) sehen wir die MySQL.Connector für .NET. Es extrahiert die Kompletten Funktionsnamen des Programms oder der Bibliothek und zeigt dessen Quellcode an. Ein super .NET Decompiler der auch die Ursprungsform IL (Intermediate Language). Common Intermediate Language (CIL) (teilweise auch nur Intermediate Language (IL)) ist eine Zwischensprache, in die alle Programme der Common Language Infrastructure übersetzt werden. CIL ist eine objektorientierte Assemblersprache und ist vollständig stackbasiert. 

Auf dem Zielcomputer wird die CIL von einem Laufzeitsystem (Virtual Execution System) in systemeigenen Programmcode übersetzt, um in CIL vorliegende Programme ausführen zu können.
CIL ist in frühen Entwicklungsphasen von .NET als Microsoft Intermediate Language (MSIL) bezeichnet worden, mit der Standardisierung der Common Language Infrastructure ist diese Bezeichnung aber verworfen worden.
Bei der Kompilierung von Quellcode aus .NET-Sprachen wird nicht direkt systemeigener Programmcode erzeugt, sondern in einem ersten Schritt zunächst CIL-Code. In CIL werden die Programmbefehle als eine Folge von Bytewerten (teilweise auch mehr als ein Byte) angegeben. Dieser Code wird auf dem Ausführungsrechner in einem Laufzeitsystem zu nativem Maschinencode übersetzt (Just in time (JIT) Kompilierung) und ausgeführt.
Während der Übersetzung werden auch die Sicherheit und die Korrektheit des Codes (Manipulation) überprüft.


Was kann der ILSpy .NET Decompiler? (Juni 2011)
Es unterstützt das komplette Microsoft .NET Framework also auch VB und nicht nur C#, aber ist ja auch verständlich, weil die beiden Sprachen nun mal CIL sind. Es kann zwischen einer C# Ansicht und einer detaillierteren IL Ansicht gewechselt werden. Elemente werden Gruppiert und können bequem über ein “+” / “-” Zeichen aufgeklappt und zugeklappt werden. Der Disassembler unterstützt das Suchen von Funktionsnamen. ILSpy lässt sich erweitern durch Plugins. Beim erneuten öffnen zeigt euch das Programm die letzte Position im Baum an, was ich sehr praktisch finde. Achja importiert man eine *.EXE Datei welche weitere .NET Bibliotheken benutzt werden diese mit importiert und das ganze bleibt auch bei einem erneuten Programmstart erhalten. Bei bedarf können einzelne Teile über Rechte Maustaste entfernt werden. 

Der ILSPY Decompiler und Serial-Fishing

Diese können von Lizenznummern-Cracks berechnet werden oder aus dem Speicher abgelesen werden („Serial fishing“), das wäre bei Disassembler der Fall mit einem Decompiler habt ihr es einfacher und könnt direkt z.B. ein “magic Passwort / Hash” sehen und decrypten (gab in Vergangenheit und Zukunft) immer wieder Fälle wo diese “magic passwords” aufgedeckt wurden und die gerade Sicherheit von Hardware schwer in Mitleidenschaft ziehen können, weil ein komplexes Firmware-Update gebraucht wird, wenn der Hersteller überhaupt bereit ist ein Patch zu erstellen.
Wer kennt noch die “magic passwords” von BIOS der frühen 2000er? z.B. “LKWPETER”, damit konnte man wirklich jedes BIOS Passwort (manuell eingegeben umgehen, vielmehr aushebeln).
Hatte damals auch Zeit und Spaß daran kleinere Software zu untersuchen und in Schulen mein Unwesen zu treiben..
Aber eher mit Disassembler “Ein Disassembler ist ein Computerprogramm, das kodierte Maschinensprache eines ausführbaren Programmes in eine für Menschen lesbarere Assemblersprache umwandelt. Seine Funktionalität ist der eines Assemblers entgegengesetzt”

Security Code Review – Anwendungsfall (Juni 2011)
Ein Anwendungszenario ist zum Beispiel die Überprüfung des eigenen Quellcodes ob dort Konstanten angegeben wurden, man stelle sich statische Lizenzschlüssel vor, also nur einen für das komplette Programm der nicht generiert wird. Gleiches gilt für Benutzernamen und Passwort zum Beispiel Standardwerte, welche bei der Entwicklung vorhanden waren. Der SAMSUNG DATA MANAGEMENT SERVER SQLI besitzt z.B. ein Defaulwert root und ein Kennwort was ich hier nicht schreibe, ihr könnt euch einen guten Artikel zu dem Thema ansehen

Weitere Informationen und Download von ILSpy Decompiler für VB.NET und C# findet ihr auf Github 

Rechtliche Lage zu Decompilern,”Patchen”,”Cracks” in Deutschland und International

Quelle: https://de.wikipedia.org/wiki/Crack_(Software)#Rechtliche_Lage
Die meisten kommerziellen Applikationen untersagen in ihren Lizenzbedingungen jegliche Modifikationen der Software oder sogar schon den Vorgang des Disassemblierens. In vielen Ländern existieren Gesetze, die definieren, inwieweit eine Modifikation eines Binärprogramms erlaubt ist. In Deutschland ist das Modifizieren eines Binärprogramms somit grundsätzlich erlaubt, solange die ursprüngliche Funktionalität des Programms nicht beeinträchtigt wird. Zusätzliche Funktionen dürfen dabei alleine zum Zwecke der Herstellung von Kompatibilität zu eigenen Programmen implementiert werden. Ein Patch darf dabei nur in Form eines Programms verbreitet werden, das die Originaldatei nach Vorgaben verändert, jedoch nicht in Form einer modifizierten Kopie der Originaldatei. Das Recht, ein Programm zum Zwecke der Herstellung von Kompatibilität zu verändern, ist auf internationaler Ebene nicht selbstverständlich. Das Untersagen jeglicher Modifikationen in den Lizenzbedingungen hat jedoch in den seltensten Fällen rechtswirksame Konsequenzen, da dies u. a. auch den Vorgang des Entfernens eines Computervirus durch Antivirenprogramme in Frage stellt.

Da die rechtliche Lage häufig unklar ist, was das Entfernen von einem Kopierschutz betrifft, verwenden manche kommerzielle Applikationen einen verschlüsselten oder komprimierten Binärcode, wodurch die Daten gemäß Vorgaben in ausführbaren Maschinencode konvertiert werden müssen, bevor sie vom Computer interpretierbar sind. Da die Programme jedoch dem Rechner „verraten“ müssen, wie die integrierten Daten zu konvertieren sind, ist es auch für Cracker nachvollziehbar, wie sich der Code in einen interpretierbaren Zustand konvertieren lässt. Die Software-Industrie implementiert solche Verfahren, um es einerseits den Crackern zu erschweren, das Programm zu interpretieren, jedoch auch, um die Möglichkeit zu unterbinden, ein Patch-Programm zur Modifikation des Original-Programms zu veröffentlichen, da es so nicht mehr möglich ist, das Programm durch das Verändern einzelner Bytes zu modifizieren, und als einzige Möglichkeit die Verbreitung einer vollständigen modifizierten Originaldatei verbleibt. Dies ist urheberrechtlich meist eindeutig untersagt.

Quelle: Juni 2011 (kid2elite, von mir) | Reviewed April 2019.