Wie kann ich einen Compiler zurückentwickeln?

8

Ich habe einen Compiler, der zu undokumentiertem Bytecode für eine undokumentierte VM kompiliert. Ich möchte in der Lage sein, auf die gleiche VM zu kompilieren, aber ich bin mir nicht sicher, wie ich das machen soll. Wie lerne ich das? Hat jemand ein Protokoll oder ein Tagebuch von ihnen veröffentlicht, die dasselbe tun?

BEARBEITEN : Ich habe nicht erwähnt, dass dies der RobotC 3.0-Compiler für LEGO Mindstorms ist. Bevor irgendjemand etwas anderes vorschlägt, weiß ich alles über nXc und ähnliche Projekte, und sie sind keine Option, da ich einem FIRST FTC Robotik Team helfe, das nur RobotC oder LabView benutzen darf.

Für diejenigen unter Ihnen, die vorgeschlagen haben, dass ich die Sprache des Compilers anvisiere, mache ich das noch nicht, weil ich hoffe, dass bestimmte Features der Hardware, die nicht vom Compiler verfügbar gemacht werden, von der Firmware offen gelegt werden, und weil ich mehr benutzerdefinierte Speicherverwaltung als von RobotC erlaubt machen möchte.

    
Silas 09.12.2011, 01:10
quelle

2 Antworten

5

Meine Neigung wäre, den Compiler zu zerlegen. Wenn es in .NET (C #, VB.NET, etc.) oder Java geschrieben ist, gibt es Decompiler, die Ihnen etwas sehr nahe am ursprünglichen Quellcode geben (es sei denn, es ist verschleiert). Auch wenn es C ++ ist und Sie nur Assembly erhalten können, könnten die Bibliotheksaufrufe Sie in die richtige Richtung weisen.

Wenn der Bytecode klein ist, besteht eine andere Möglichkeit darin, mit einem "Hallo Welt" -Programm zu beginnen, es zu kompilieren, eine kleine Änderung vorzunehmen, das zu kompilieren und dann die zwei Bytecode-Ergebnisse zu differentieren.

Wenn Sie weitere Informationen zu dem spezifischen Compiler / der VM posten können, hat vielleicht jemand anderes damit Erfahrung.

Bearbeiten: Da es sich um ein kommerzielles Produkt handelt, ist es wahrscheinlich, dass das Reverse-Engineering durch Dekompilierung gegen seine Lizenzvereinbarung verstößt. Der Bytecode könnte nicht reanimiert werden (ich bin kein Anwalt). Es klingt, als ob du in einer Catch-22 bist. Wenn Sie Erfolg haben, verwenden Sie nicht RobotC oder LabView. Wenn der Wettbewerb nur angibt, dass der Code auf der RobotC-VM ausgeführt werden muss, ist dies möglicherweise machbar. Denken Sie jedoch daran, dass Sie, sobald Sie den Bytecode RE haben, noch Ihren eigenen Compiler schreiben müssen, bevor irgendjemand Software schreiben kann. Wenn du das zum Spaß machst, großartig; sonst wäre es vielleicht nicht machbar.

Ich habe einen interessanten Link gefunden, der auf einer Masterarbeit basiert: Software Reverse Engineering

    
TrueWill 09.12.2011, 01:18
quelle
0

Es scheint eine Menge Ressourcen zu geben, die Sie hier anschauen können:

Ссылка

    
quelle