Zitat:
Die Procedure CRCTab erinnerte mich an meine Assembler Zeiten vor 30 Jahren. Daten in Code zu speichern wurde nicht richtig umgesetzt. Auch sollten wohl bald Daten und Code sauber getrennt sein, so das ich es in der 5.2 für mich geändert habe.
Ja ich weiß. Der Grund warum diese "Daten" im BSS zu liegen kommen sollten, ist die Überprüfbarkeit der richtigen Funktion der CRC während der Laufzeit. Wenn die CRCs dazu benutzt werden innerhalb des Programmes zb. Testvektoren der Cipher/Hash vor Manipulationen zu schützen dann benötigen wir auch einen einfachen Weg die CRC selber vor Manipuation zu schützen. Mit der Speicherung im Codesegement kann man nun über den kompletten CRC Code eine CRC ziehen und so Laufzeitmanipulationen am CRC Code erkennen.
Das wurde von mir so angedacht aber niemals bis zu Ende implementiert. Und das hat auch einige Gründe. Kryptographisch gut wäre diese Lösung nämlich nicht. 100% vor cleveren Manipulationen wird sie auch nicht schützen. Deswegen CRC so belassen wie es war und die finalen Prüfungen nicht weiter implementiert.
So bleibt wenigstens das Feature das man diese BSS-Konstanten, auf Grunde des Schreibschutzes des CRC Codes im Speicher, als echte schreibgeschützte Konstanten benutzt, und so unabsichitliche Änderungen dieser Konstanten verhindert.
Gruß Hagen