www.beck-ipc.com
www.beck-ipc.comwww.beck-ipc.com  | ImprintImprint
FAQFAQ  | SearchSearch  |
  |LoginLogin

Header-Checksum ab RTOS V1.40

Questions and discussions about the operating system RTOS and the corresponding C-LIB.
Hallo,

in RTOS 1.40 wurde die Prüfung der Checksumme im Header der Exe eingeführt.
Wie muß diese Prüfsumme berechnet werden?

mfg
Thomas Rebhan

Hallo Herr Rebhan,

an Offset 12h/13h steht die Checksumme in der EXE-Datei. Dieser 16 Bit Wert enthält das Einerkomplement der aufaddierten Prüfsumme. Die Prüfsumme wird gebildet, indem alle Werte der EXE-Datei per 16-Bit Checksum aufaddiert werden.

MfG,
André Pribil
Software Development
Beck IPC GmbH

Danke, es hat funktioniert.

Hallo Herr Pribil,

gibt es eine Sonderregel für den seltenen Fall Prüfsumme=0xffff (somit Einerkomplement=0x0000)?

mfg
Thomas Rebhan

Generally 16 bit checksums can be any 16 bit value.

If the computed sum matches the stored sum, then the test passes. Zero or 0xFFFF are just as good a result as any other 16 bit result.
Jack Gatrost
Software Development
Beck IPC GmbH

Hallo Herr Gatrost,

wenn bei Offset 12h/13h im EXE-Header der Wert 0 steht, erfolgt keine Überprüfung der Prüfsumme.
Somit müsste der Wert 0 als Ergebnis der Prüfsummenberechnung ausgeschlossen werden!?

http://www.fysnet.net/exehdr.htm

mfg
Thomas Rebhan

Ok, I see your point.

And I do not know the answer to your question. Good question.
Jack Gatrost
Software Development
Beck IPC GmbH

I suspect the EXE description at your link was not carefully worded.

Perhaps it works the opposite way round from what you stated (and what was stated at your EXE documentation link). Instead of

wenn bei Offset 12h/13h im EXE-Header der Wert 0 steht, erfolgt keine Überprüfung der Prüfsumme.

my guess is that it is

wenn keine Überprüfung der Prüfsumme, steht bei Offset 12h/13h im EXE-Header der Wert 0

But this new statement no longer means that zero's at 12h/13h indicate no checksum was computed.

So if you know that your EXE was published with a checksum, then even a zero value in 12h/13h has meaning as a checksum.
Jack Gatrost
Software Development
Beck IPC GmbH

Hallo Herr Gatrost,

das Hinzufügen einer Prüfsumme ist ja für das IPC@CHIP-RTOS optional.
Das IPC@CHIP-RTOS führt also auch ein Programm aus, wenn keine Prüfsumme (12h/13h sind 0) vorhanden ist.

Mir ist weiterhin unklar, wie eine Prüfsumme mit dem Wert 0 im Header eingetragen werden muss.

mfg
Thomas Rebhan

Now I see your point. Years ago I had worked on this EXE checksum checking section of the @Chip-RTOS-x86 ... but in the meantime had forgotten about it.

If that chksum WORD in the EXE header is zero, the @Chip-RTOS does no checksum testing. Otherwise we would likely see the "File has wrong checksum" message on the console when launching programs built without the checksum.

So how could zero's be avoided in the checksum? A clever linker could change some insignificant bit somewhere in the EXE file to force a non-zero checksum. So long as the adjusted byte is not program code or data it could be free to do this tweak without causing any side effects. ( I am just guessing as I have never read or written the linker.)
Jack Gatrost
Software Development
Beck IPC GmbH

Es reicht aus das Programm neu zu linken, wenn die Prüfsumme 0 ist.
Aufgrund des neuen Zeitstempels in der Exe ergibt sich eine andere Prüfsumme.

mfg
Thomas Rebhan

Return to RTOS


Who is online

Users browsing this forum: No registered users and 1 guest


cron