Ich habe das gerade in den letzten Tagen gesehen und kann nicht herausfinden, wie es funktioniert. Das Video, über das ich spreche, ist hier :
Dies ist die am besten bewertete Antwort auf diese Frage zum Stapelüberlauf: Warum wurde dieses Programm von drei Compilern abgelehnt?
Wie kann diese Bitmap ein C ++ - Programm für "Hello World" anzeigen?
Antworten:
Ein BMP (DIB) -Bild besteht aus einem Header, gefolgt von unkomprimierten 1- Farbdaten (für 24-bpp-Bilder sind es 3 Bytes pro Pixel, die in umgekehrter Zeilenreihenfolge und mit 4 Bytes Zeilenschritt gespeichert sind).
Die Bytes für Farbdaten werden zur Darstellung von Farben verwendet (dh keines von ihnen wird vom Dateiformat 2 "vorgeschrieben" , sie stammen alle aus der Farbe jedes Pixels), und es besteht eine perfekte 1: 1-Entsprechung zwischen Pixelfarben und geschriebenen Bytes in der Datei; Mit perfekt ausgewählten Farben können Sie also tatsächlich alles, was Sie wollen, in die Datei schreiben (mit Ausnahme des Headers).
Wenn Sie die generierte Datei im Editor öffnen, werden die Farbdaten als Text angezeigt. Sie können immer noch deutlich an der Kopfzeile (dem Teil vom
BM
Anfang des Textes) erkennen, die vom Dateiformat vorgegeben wird.Meiner Meinung nach wurde dieses Video folgendermaßen erstellt: Zuerst berechnete der Autor die für die Bitmap erforderliche Größe und erstellte eine DIB-Datei mit der richtigen Größe, die mit einer Farbe gefüllt ist, die sich zu einem einfachen Muster erweitert (z. B. alle Bytes 65 =>
'A'
). Ersetzte dann ein solches Muster durch den "Nutzlast" -Code, wie im Video gezeigt.Beachten Sie jedoch, dass es nicht unmöglich ist, das Ganze mit dem Editor von Hand zu gestalten - mit dem Farbauswahldialog, einer ASCII-Tabelle und Grundkenntnissen des DIB-Formats ist dies möglich, aber es wäre viel langsamer und fehleranfälliger.
Weitere Infos zum DIB-Format
quelle
Ich nehme an, Sie beziehen sich auf die Antwort auf eine der Aprilscherz-Fragen.
Ich vermute, dass jedes Pixel eine binäre Darstellung hat. Und dass jedes Zeichen im Quellcode eine binäre Darstellung hat.
Die Person, die das Programm erstellt hat, muss die Farbe für jedes Pixel ermittelt haben, das eine binäre Darstellung hat, die jedem Zeichen entspricht.
quelle
Aus theoretischer Informatik wäre es interessant zu fragen, ob jedes Programm so geschrieben werden kann, dass Sie als Bitmap tatsächlich den Quellcode sehen, der dasselbe tut. Wenn Sie ernsthaft an solchen Ergebnissen interessiert sind, lesen Sie zB den Fixpunktsatz von Kleene .
Das Programm als Bild kann auch als eine Form der Codeverschleierung angesehen werden. Nicht dass es besonders praktisch gewesen wäre ...
quelle