Freier Decompiler von Avast

Wer kennt das nicht; man steht mitten im Nirgendwo und benötigt plötzlich einen Decompiler. Da passt es nur allzu gut, dass Avast vor einigen Tagen einen Decompiler veröffentlicht hat. Der Retargetable Decompiler war, laut Aussage von Avast knapp sieben Jahre in der Entwicklung, bevor er nun das Licht der Öffentlichkeit erblickte. Mit Hilfe dieses Decompilers können Kompilate unterschiedlicher Architekturen (Intel x86, ARM, MIPS, PIC32 und PowerPC) decompiliert werden. Leider werden im Moment nur 32-Bit Binaries unterstützt. Auch die Liste der unterstützen Dateiformate für die zu decompilierende Datei reicht von ELF, PE, Mach-O, COFF, AR, Intel HEX bis zu reinem Maschinencode.

Die Online-Version des Decompilers

Als Plattformen für die Ausführung des Decompilers, werden offiziell Windows und Linux unterstützt. Unter macOS funktioniert die Ausführung ebenfalls, allerdings wird hier keine Garantie für die Funktionsfähigkeit gegeben. Daneben existiert eine Online-Version, mit welcher der Decompiler ausprobiert werden kann. Hierbei gilt eine Beschränkung von 10 MiB je Binary. Der Retargetable Decompiler unterstützt die statische Analyse der zu dekompilierenden Dateien, erkennt automatisch den verwendeten Compiler und Packer und ist in der Lange die Ausgabe in C und einer an Python angelehnten Syntax auszugeben. Der Quelltext des Decompilers ist auf GitHub zu finden. Das Projekt ist unter der MIT-Lizenz lizenziert und damit freie Software. Der Download und weitere Informationen zum Retargetable Decompiler findet man auf der offiziellen Seite des Decompilers.

Ubuntu Server auf einem Linutop 2 installieren

Bei Linutop handelt es sich um eine Reihe von Kleinstrechnern. Der Linutop 2 ist dabei Baujahr 2008, besitzt einen AMD Geode LX800, welcher mit 800 Mhz getaktet ist. Daneben befindet sich in dem Gerät 512 MiB Arbeitsspeicher. Auf einem solchen Gerät wollte ich nun Ubuntu in der Servervariante installieren. Als Version kommt dabei nur die 12.04 LTS, welche bis April 2017 unterstützt wird, in Frage.

Der Grund hierfür ist das der AMD Geode LX800 kein PAE unterstützt, neue Ubuntu-Versionen dieses aber zwingend voraussetzen. Im ersten Schritt muss die Netboot-Variante (non-pae) heruntergeladen werden. Die mini.iso kann dann mit Tools wie UNetbootin auf einem USB Stick gespielt werden.

Ein Linutop 2

Ein Linutop 2

In diesem Fall wird das System von und auf diesem USB-Stick installiert. Der Grund dafür ist der 1 Gigabyte große Flashspeicher welcher nicht ausreicht um das System zu installieren. In der Standardkonfiguration weist Ubuntu der Systempartionen 512 MB und der Swap-Partion ebenfalls 512 MB zu. Wenn man der Systempartion die gesamten 1000 Megabyte zuweist, sollte sich der Ubuntu Server auch auf dem internen Flashspeicher installieren lassen, allerdings verfügt man dann nur noch über knapp 100 Megabyte freien Speicher.

Wenn man bei der Installation stattdessen das ganze auf einem angeschlossenen USB Stick installiert, sollte auch genug Platz für andere Aufgaben da sein. Die 1 Gigabyte große Flashdisk, kann dabei als Swapspeicher genutzt werden. Für die Installation muss der Linotop ans Netz angeschlossen sein. Nachdem man die grundlegenden Einstellungen vorgenommen hat, dauert die Installation zirka 60 bis 90 Minuten. Anschließend kann das System genutzt werden.

Visual Studio ignoriert die Haltepunkte beim Debuggen

Manchmal kann einen die Softwareentwicklung schon in den Wahnsinn treiben, vor allem wenn es um triviale Dinge geht. So sollte es ja eigentlich selbstverständlich sein, das der Debugger an einem Haltepunkt hält. Mein erster Gedanke war, das es daran liegt das ich das Projekt im Debugmodus auf “Any CPU” eingestellt habe. Sobald ich es auf “x86” oder “x64” gestellt habe, hielt der Debugger an der gewünschten Stelle. Allerdings hatte ich ein ähnliches Projekt mit fast den selben Einstellungen (auch “Any CPU”), doch dort funktionierte es mit dem Debugger. Also sollte es ein Vergleich der Projektdateien richten. Nach einiger Zeit war hier auch kein Erfolg zu melden.

Beim Starten des Projektes fiel mir allerdings auf das die Haltepunkte ausgeblendet wurden:

Im Tooltip zu den Haltepunkten stand dann:

No symbols have been loaded for this document

Dies brachte mich dazu in das “bin/Debug” Verzeichnis zu schauen und siehe da, es gab keine pdb Dateien für das Projekt. Um die pdb Dateien für das Projekt anzulegen, geht man in die Projekteinstellungen, dort auf “Build” und dann auf “Advanced”.

In dem sich darauf öffnenden Dialog stellt man die “Debug info” auf “full”. Damit sollten die PDB Dateien erzeugt werden und das debuggen wieder funktionieren.

Weitere Informationen gibt es unter:
http://en.wikipedia.org/wiki/Program_database
http://msdn.microsoft.com/en-us/library/yd4f8bd1%28v=vs.71%29.aspx
http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx
http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx