home *** CD-ROM | disk | FTP | other *** search
/ ftp.uni-stuttgart.de/pub/systems/acorn/ / Acorn.tar / Acorn / riscos / unixtools / checksum.spk / Checksum / !ReadMe next >
Text File  |  1990-07-16  |  3KB  |  103 lines

  1. Quick Docs for Checksum V1.01   (C) Richard K. Lloyd 1990
  2. -----------------------------   Code/docs are freely distributable
  3.  
  4. Introduction
  5. ------------
  6.  
  7. Many systems employ checksums on binary executables (VAX/VMS and the Amiga
  8. for example), but the Archimedes DOES NOT. Using checksums has the following
  9. pros and cons:
  10.  
  11. Advantages
  12. ----------
  13.  
  14. 1. Stops other people modifying your code - especially putting their name
  15.    in there instead of yours !
  16.  
  17. 2. Prevents viruses (unless they're "checksum aware" of course) from attacking
  18.    your executable.
  19.  
  20. 3. Stops horrendous things happening if a sector load is faulty and loads
  21.    gibberish as your code ("no change there" I hear you cry).
  22.  
  23. Disadvantages
  24. -------------
  25.  
  26. 1. Prevents innocuous file hacking (e.g. changing ":0.$.Kiddie.Game" to
  27.    "<Kiddie$Game>" using a memory editor).
  28.  
  29. 2. Not exactly impossible to circumvent for the determined (NOP out a
  30.    couple of instructions).
  31.  
  32. So what about Checksum ?
  33. ------------------------
  34.  
  35. Syntax:
  36.  
  37. *Checksum [<Input filename>] [<Output filename>]
  38.  
  39. If both parameters are omitted, then you will be prompted for both.
  40. If only the Input filename is specified, then it is assumed that you wish
  41. to write the CRC-checked executable to the same filename - you will be
  42. prompted for confirmation (as you would be if the output file already exists).
  43.  
  44. Checksum loads in an executable, generates a checksum for it and then appends
  45. some ARM code to the end to calculate the run-time CRC and compare it with
  46. the previously known CRC (an error message will be generated if the CRCs
  47. fail to match). The new CRC-checked executable is then saved (136 bytes
  48. bigger than the original).
  49.  
  50.  
  51. Version 1.01 (mainly a bug-fix release)
  52. ------------
  53.  
  54. * Added command-line parsing of input and output filenames.
  55.  
  56. * Fixed offset problem with executables > 4K. I'd used an STR instruction,
  57.   which is restricted to +/- 4K from the instruction.
  58.  
  59. * Changed faulty CRC step from 4 to 1 when OS_CRC is called. This makes the
  60.   call slower, but now checks every byte rather than every fourth byte !
  61.  
  62. Version 1.00
  63. ------------
  64.  
  65. * Saves the first instruction of the executable (initialisation offset
  66.   for modules) and replaces it with a branch to the CRC-checking code.
  67.   After a successful check, the first instruction is replaced and then
  68.   branched to. Yes, I know this sounds like the embyronics of a virus,
  69.   but it's the exact opposite - it actually prevents viruses from attacking
  70.   CRC-protected executables.
  71.  
  72. * Knows about modules and their funnies (such as no initialisation code).
  73.  
  74. * Retains filetypes (or load/exec addresses).
  75.  
  76. * Checks the executable to see if it already has CRC-checking code
  77.   put there by itself and will abort if it spots any such code.
  78.  
  79. Future Improvements to Checksum V1.01
  80. -------------------------------------
  81.  
  82. * Put a Desktop front-end onto the thing.
  83.  
  84. * Parse command-line filenames, only prompting for filenames if omitted.
  85.  
  86. * Add support for BASIC programs to be checksummed.
  87.  
  88. Estimated Release Date of Checksum V1.10
  89. ----------------------------------------
  90.  
  91. End of August 1990 - another program to go onto the (long !) list of updates...
  92.  
  93. Where to find me to report bugs or improvements to Checksum
  94. -----------------------------------------------------------
  95.  
  96. Snail Mail           JANET e-mail
  97. ----------           ------------
  98. Richard K. Lloyd,    rkl@uk.ac.liv.cs.mva
  99. 1, Banks Road,
  100. Lower Heswall,
  101. Wirral,
  102. Merseyside. 
  103.