Ein paar schnelle Dinge aus dem Weg, da ich weiß, dass diese Art von Fragen oft einen böswilligen Hintergrund haben.
- Ich versuche nicht, etwas in einem Dateiformat (jpg) auszuführen
- Ich versuche nicht, einfach das Endziel zu erreichen (dh etwas wie ein JPG aussehen zu lassen, sondern es herauszuholen)
- Ich versuche nur, den Unterschied zwischen dem Parsen von Informationen durch einen Computer zu erkennen
Nach meinem Verständnis analysiert ein Computer, der sich mit einem Datendateiformat wie JPG, PDF usw. befasst, die Informationen nur in einem Container, der meiner Meinung nach bestimmten Layouts / Spezifikationen entspricht. Häufig ist zu hören, dass der Unterschied zwischen einem Datendateiformat und einer ausführbaren Datei darin besteht, dass der Computer die Datendatei nicht "ausführt". Meine Frage ist: Woher weiß der Computer, was er lesen und was er ausführen soll? Was ist der Unterschied? Mein geistiges Bild von einem Computer ist etwas, das Anweisungen Schritt für Schritt liest. Wenn in der Mitte eines Jpg, das analysiert wurde, ein Shellcode zum Aufklappen eines Nachrichtenfelds angezeigt wird, warum wird es beim Lesen nicht aktiviert?
Mir ist bewusst, dass Dinge über Exploits für die Software ausgeführt werden können, indem der Parser ausgetrickst wird - vielleicht über Pufferüberläufe usw. usw. Auch hier ist das Endziel, wie es erreicht werden kann, weniger wichtig. Ich bin mehr daran interessiert, wie der Computer erkennen kann, was gelesen werden soll, was ausgeführt werden soll und wie das Lesen ohne Ausführung erreicht werden kann.