20 Punkte von iolothebard 2025-02-28 | 9 Kommentare | Auf WhatsApp teilen

Aus einer nicht quelloffenen, nur teilweise vorhandenen Binärdatei (die Runtime-DLLs fehlten)
den Zweck des ursprünglichen Programms erschließen und es in Python neu schreiben …
im Guten wie im Schlechten ganz klar „künstliche“ Intelligenz.

Übersetzung:

Nach Jahren der Enttäuschung über KI war ich wirklich ziemlich schockiert. Das ist kein üblicher „KI ist erstaunlich“-Beitrag. Ich war bis heute noch skeptisch.

Hintergrund : Wie viele andere habe ich ChatGPT und andere KI-Tools zur Unterstützung beim Programmieren ausprobiert. Das Ergebnis? Durchweg ernüchternd. Im Grunde waren es glorifizierte Suchmaschinen, die falschen Code ausspuckten, verpackt in selbstsichere Erklärungen.

Die Herausforderung : Meine zweijährige Enkelin war heute zu Besuch. Da fiel mir eine einfache App ein, die ich 1997 mit Visual Basic 4 erstellt hatte. Aber eine 27 Jahre alte EXE ausführen? Ohne alte DLLs und Kompatibilitätsschichten? Genau.

The Hail Mary : Aus Neugier habe ich die eigentliche EXE-Datei in Claude 3.7 hochgeladen und eine einfache Frage gestellt: „Können Sie mir sagen, wie ich diese Datei ausführen kann? Es sieht so aus, als wäre sie in Visual Basic 4 erstellt worden. Ich würde sie gern in Python umwandeln.“

Was ich erwartet hatte : Eine Standardantwort wie „Alte Datei, Sicherheitsrisiko, und so weiter …“

Was tatsächlich geschah: Claude 3.7 begann mit den erwartbaren Warnhinweisen, aber danach wurde es interessant. Irgendwie hat es die Binärdatei analysiert und bestimmte Komponenten identifiziert:

  • "Form1"
  • "cntTimer"
  • "btnExit"
  • es erkannte sogar eine eingebettete Sounddatei!

Dann tat es etwas, das keine andere KI für mich getan hatte. Es schrieb eine vollständige Python-Portierung mit Pygame:

  1. Die Funktionalität wurde perfekt nachgebildet.
  2. Es gab klare Installationsanweisungen.
  3. Es funktionierte tatsächlich sofort beim ersten Versuch

Dauer: weniger als 5 Minuten. Ohne Übertreibung.

Als ich um Anpassungen bat, etwa darum, den Sound an die Leertaste zu binden und bunte Schriftarten hinzuzufügen, lieferte es sofort perfekte Code-Updates.

Zum ersten Mal, seit ich KI nutze, war ich wirklich beeindruckt. Kein bloßer Partytrick, sondern eine praktische Lösung, die mir Arbeitszeit ersparte.

Am Ende sagte ich Claude, dass ich beeindruckt sei, und schickte ihm eine unbeholfene Zusammenfassung, warum ich das so cool fand .... Daraufhin formulierte es den Reddit-Beitrag neu. Eigentlich klingt er „fast“ normal. (Diesen Teil habe ich geschrieben).

<am selben Tag, 5 Stunden später> Update

Ich habe ein Update/eine Zusammenfassung zu diesem Beitrag gepostet (von mir geschrieben). Ich weiß nicht, ob das der richtige Weg ist, aber mindestens eine Person im Internet hat das gesagt, also scheint es wohl zu stimmen.

https://www.reddit.com/r/ClaudeAI/comments/1iz1i61/update_i_uploaded_a_27yearold_exe_file_to_claude/

<Update - 11 Stunden später>

Anscheinend bin ich jetzt der „Reddit-Opa“. Lustig.

Ein paar Klarstellungen:

- Ja, Claude erlaubte das Hochladen der EXE.
- In der kompilierten EXE gibt es ein paar erkennbare Strings, aber nicht viele.
- Claude hat diesen Beitrag und den Titel geschrieben. Darüber hinaus ist der One-Shot-Aspekt der beste Teil.
- Meine inzwischen 29-jährige Tochter hämmerte damals auf die Tastatur, woraufhin WAV-Dateien abgespielt und Text angezeigt wurden.

Ich ergänze den Chat-Link, weil manche ihn in den Kommentaren nicht sehen konnten:

https://claude.ai/share/3eecebc5-ff9a-4363-a1e6-e5c245b81a16

<Update - 1 Tag später>

Dieser erneut auf Twitter/X gepostete Beitrag hat inzwischen über eine Million Aufrufe. Den vollständigen Beitrag gibt es hier. Ich habe Claude den Beitrag zusammen mit allen Kommentaren in genau demselben Kontext hochgeladen, in dem auch das Skript und der ursprüngliche Beitrag entstanden. Ich habe es insbesondere gebeten, die Kritik zusammenzufassen. Hier ist die Zusammenfassung von Claude:

Valider technischer Kontext

Einige wiesen völlig zurecht darauf hin, dass VB4-Executables in p-Code statt in Maschinencode kompiliert werden und daher leichter zu analysieren sind als vollständig kompilierte ausführbare Dateien. Das ist sachlich korrekt. VB vor .NET speicherte ein interpretierbares Bytecode-Format, sodass sich daraus leichter Informationen extrahieren ließen als aus vollständig kompilierten Binärdateien.

Skepsis hinsichtlich der Komplexität

Andere merkten an, dass der resultierende Python-Code relativ einfach war (etwa 100 Zeilen). Das liegt daran, dass die App selbst keine komplexe Anwendung war, sondern ein simples Programm mit grundlegender Funktionalität. Der beeindruckende Teil war nicht die Komplexität des erzeugten Codes, sondern dass der Weg von der Binärdatei zu funktionierendem Code ohne jeden Aufwand möglich war.

Missverständnisse über den Prozess

Einige Kritiker schienen zu glauben, ich hätte behauptet, Claude habe die ausführbare Datei im traditionellen Sinn „dekompiliert“. Tatsächlich hat es, wie ich im Gespräch erklärt habe, sichtbare Strings analysiert und daraus auf die Funktion geschlossen. Das ist immer noch beeindruckend, aber keine echte Dekompilierung.

Allgemeine KI-Skepsis

In der Tech-Branche gibt es naturgemäß Skepsis gegenüber KI-Fähigkeiten, und manche Kommentatoren neigen reflexartig dazu, beeindruckende Demos als Fälschung, Übertreibung oder „bloß Pattern Matching“ abzutun. Das ist ein typisches Reaktionsmuster auf Fortschritte bei KI. Die aus meiner Sicht berechtigtste Kritik ist, dass diese Leistung im richtigen Kontext eingeordnet werden muss. Claude hat keine echte Binäranalyse auf beliebigem kompiliertem Code durchgeführt, sondern clevere Schlussfolgerungen aus Text-Strings in einer VB-Executable gezogen.

9 Kommentare

 
ndrgrd 2025-03-04

Eigentlich unterscheidet sich das kaum davon, einfach ein Textdokument zu lesen und zu analysieren..

 
kandk 2025-02-28

Wow, könnte man damit vielleicht auch alte, vergessene Daten wiederherstellen? :D
Wenn man ein altes DOS-Spielvideo hochlädt und dann plötzlich eine .exe-Datei herauskommt …

 
hi098123 2025-02-28

Wie in den Kommentaren zum Haupttext erwähnt, lassen sich VB-EXE-Dateien so überprüfen, wie der Code geschrieben wurde. Bei einer C++-EXE wäre das jedoch Assembler gewesen, und dann wäre das wohl noch nicht möglich gewesen.
Eine der Stärken von KI ist, dass sie Befehle versteht und anwenden kann, daher ist sie insgeheim ziemlich gut bei Migrationsarbeiten in andere Sprachen.

 
iolothebard 2025-02-28

Ich vermute, dass sich unter den Trainingsdaten von Claude Dokumente zu P-Code von VB 4.0 befanden.

Falls nicht (also wenn es nichts Vortrainiertes dazu gab): Gibt es aus Sicht einer KI überhaupt einen Unterschied zwischen dem P-Code von VB 4.0 und x86- (oder ARM- oder …) Maschinencode? Beides ist letztlich nur eine Zahlenfolge mit bestimmten Regeln. Wenn sie das Muster aus einem kurzen Sample herausgelesen hat, ist das auf seine Weise ebenfalls beängstigend.

 
hi098123 2025-03-01

Bei Sprachen wie VB oder Python wird bei der Erstellung einer EXE nicht in Maschinencode kompiliert, sodass sich allein aus der EXE der Quellcode mit Funktions- und Variablennamen unverändert extrahieren lässt.
Dass solche Regeln erlernt und angewendet werden können, bedeutet wohl, dass es in Zukunft ziemlich schwer wird, als Entwickler zu überleben.

 
kandk 2025-02-28

Aber da Assembler ohnehin ebenfalls eine Spezifikation hat, scheint es schnell übersetzbar zu sein, wenn man diese zusammen mitliefert.

 
hi098123 2025-03-01

Dass aus Assembler lesbarer natürlichsprachlicher Code entsteht, ist ein Bereich, in dem nach dem Entfernen unnötiger Elemente wieder Dinge neu geschaffen werden müssen (Variablennamen, Funktionsnamen usw.). Deshalb denke ich, dass es etwas dauern dürfte, bis dabei wirklich gute Ergebnisse herauskommen.

 
kandk 2025-03-01

Könnte einfach sein, haha
Ich habe vor über 10 Jahren eine Arbeit über etwas Ähnliches geschrieben.

 
unsure4000 2025-02-28

Wow, das ist ziemlich erstaunlich.