home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / maj / 2196 / protexcm.doc < prev    next >
Text File  |  1994-02-12  |  19KB  |  452 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                      Protect! EXE/COM v.5.0
  7.                   (C) 1993,1994 Jeremy Lilley, 
  8.                        All Rights Reserved
  9.                         February 12, 1994
  10.  
  11.  
  12.  
  13.  
  14.  
  15. The Very Brief Table of Contents:
  16.  
  17.  
  18. Introduction: What's New With Protect! EXE/COM v.5.0 ? .... 1
  19. Why Should I Choose Protect ? ............................. 1
  20. Requirements .............................................. 2
  21. How To Use Protect! EXE/COM ............................... 2
  22. Which Files Can't Be Protected ............................ 3
  23. Legal Terms / Disclaimer .................................. 3
  24. License ................................................... 4
  25. How Does Protect! EXE/COM Stand up to Other Utilities? .... 4
  26. Technical Notes ........................................... 5
  27. The Mutation Engine ....................................... 6
  28. Closing ................................................... 7
  29.  
  30.  
  31.  
  32.  
  33.  
  34. Introduction: What's New With Protect! EXE/COM v.5.0 ?
  35.  
  36.  
  37.      If you're sick of seeing updates for Protect!, this version
  38. has not been made as a  fix for some  mass-unprotect program  as
  39. with  some  past  versions.  Instead,  v.5.0 has been  made as a
  40. personal challenge  to see  how effectively  I could  code debug
  41. traps  and  my  own  mutation  engine  (see the  Mutation Engine
  42. section).  There still were quite  a few  annoying bugs in v.4.0
  43. that I  had to  wipe out  with  complete recoding.  However, now
  44. Protect!'s output should  work completely reliably (without "bad
  45. mutations"  or  anything  of  the   sort)  on   any  standard PC
  46. compatible. In addition, you don't need to use a compressor with
  47. Protect! (which is  about time).  I've  tightened  down security
  48. quite a bit at the cost of a little speed (I didn't think anyone
  49. would object to the extra tenth of a second that the longer keys
  50. use up). Otherwise, you can basically find out anything else new
  51. from the README and WHATSNEW files.
  52.  
  53.  
  54.  
  55.  
  56.  
  57. Why Should I Choose Protect ?
  58.  
  59.  
  60.      Protect! is designed to encrypt  and secure your executable
  61. program  files  by  unobtrusively  placing  a  special  security
  62.  
  63.  
  64.                                                                 Page 2
  65.  
  66.  
  67.  
  68. envelope around them.  Without adding significantly to  the load
  69. time or the file size,  you can be sure that nobody will be able
  70. to tamper with your files without getting a file integrity error
  71. message (the file integrity error message is user-selectable for
  72. registered  users  only,  and  that  is  the  only  really "big"
  73. difference between  the registered  and unregistered files).  To
  74. Protect a specific  file, simply run Protect! on it, and you and
  75. your users will never know that it's there unless somebody tries
  76. to change it. Since the file will  be encrypted  and garbled up,
  77. not every Dick and Jane with a  hex editor will be able to blank
  78. out your copyright screens.  Don't expect  to be able to  easily
  79. trace  through  Protect's  security  envelope  with a debugger -
  80. advanced debug traps help destroy this option.  Protect! is  the
  81. most advanced executable protection program of its type that you
  82. can buy  to keep your  programs from  being altered  or reverse-
  83. engineered. 
  84.  
  85.  
  86.  
  87.  
  88.  
  89. Requirements:
  90.  
  91.  
  92.      The requirements are  basically nil:  DOS 2.0, IBM PC, 64k,
  93. etc... I can run this program on  my 4.77 mhz XT and I have done
  94. much testing of Protect! on even this lowest common denominator-
  95. type of machine,  to make sure  that Protect!  will run on every
  96. type of computer from 8088 to 486 to Pentium and beyond.  You do
  97. not  need to  have a  compressor  as with  previous  versions of
  98. Protect!,  but you are  generally recommended to use one because
  99. it may speed up  processing a  bit. Many files  that couldn't be
  100. compressed before, such as Clipper (R) files and several overlay
  101. files can now be compressed.
  102.  
  103.  
  104.  
  105.  
  106.  
  107. How To Use Protect! EXE/COM:
  108.  
  109.  
  110.      The command-line  syntax for  Protect! EXE/COM v.5.0 is the
  111. following:
  112.  
  113.      ProtExCm filename[.EXT] [* CRC_Msg.Fil - Registered only*]
  114.  
  115.      The CRC  error  message  file is  available for  registered 
  116. users only and more complete directions on how to use it and the
  117. default CRC.MSG file are  included in  the registered version of
  118. the documentation.
  119.  
  120.      Here are some usage examples:
  121.           ProtExCm MyProg.EXE
  122.           (To Protect MyProg.EXE)
  123.  
  124.  
  125.  
  126.                                                                 Page 3
  127.  
  128.  
  129.  
  130.           ProtExCm MyProg
  131.           (To Protect either MyProg.EXE or MyProg.COM)
  132.  
  133.  
  134.      As you can see, you don't need an MIT engineering degree to
  135. use Protect.  Keep  in  mind  that you  can  customize  the file
  136. integrity error message  if you register  Protect.  Also, when a
  137. file integrity error occurs, an errorlevel of 250 is returned to
  138. DOS. 
  139.  
  140.      Please  note that  a file  CANNOT be  expanded  after being
  141. protected with Protect! EXE/COM  (you can probably see why),  so
  142. please preserve the backup file  (.OLD) until  you are sure that
  143. the protected file  runs correctly  (some  incompatibilities may
  144. possibly arise with  certain files).  This is about all that you
  145. need to know before you can really start protecting your program
  146. files. I have taken out PROTECT.BAT from this version because it
  147. was basically worthless,  especially  because compression is not
  148. required under Protect! v.5.0.
  149.  
  150.  
  151.  
  152.  
  153.  
  154. Which Files Can't Be Protected:
  155.  
  156.  
  157.      Windows (R)  and OS/2 (R)  files cannot  be protected  with
  158. Protect! EXE/COM.  The reason for this is that a  Windows EXE is
  159. basically a small  DOS program that  says "this program requires
  160. Windows" with a  pointer  to the actual  Windows program  (which
  161. only Windows and Windows-supporting  products detect in order to
  162. use the Windows part). Protect! will now automatically detect if
  163. a file is for Windows or OS/2 so  that you don't waste your time
  164. trying to Protect them.  Also, due to the structure of Protect!,
  165. files  larger  than  the 600k  neighborhood  can't be  Protected
  166. (because the entire  file  has to be  able to all  fit in memory
  167. once  when  it  loads).  This fact,  of  course, makes  Protect!
  168. worthless for  xBase files where the basic  "Hello World" EXE is
  169. over a meg. You can  technically Protect  files like COMMAND.COM
  170. (though not the older PC-DOS(R) system files called IBMDOS.COM &
  171. IBMBIO.COM),but it would be rather pointless, especially because
  172. most resident virus-detection programs double and triple monitor
  173. system files.
  174.  
  175.  
  176.  
  177.  
  178.  
  179. Legal Terms / Disclaimer:
  180.  
  181.      Protect! EXE/COM v.5.0  basically  has no  legal guarantee/
  182. warranty basically because I don't want to get sued over it, and
  183. should be used "as is." Here is the official disclaimer:
  184.      
  185.      Protect! EXE/COM v.5.0  ("program")  will  alter executable
  186.  
  187.  
  188.                                                                 Page 4
  189.  
  190.  
  191.  
  192. files and  may have or cause  compatibility  problems  with them
  193. (that is why .OLD files are created,  in case of incompatibility
  194. with  a  particular  file)  in certain  circumstances.  Under no
  195. circumstances may Jeremy Lilley  ("author")  be held  liable  or
  196. accountable for  any damage to system  files,  executable files,
  197. data files,  or any other  system or data  damage due to  use or
  198. misuse  of  his  program.  The  author  also  may  not  be  held
  199. accountable  for  loss  of  profits  or  for  any  other damages
  200. incurred by the use or misuse of his  program.  The  author  has
  201. forewarned any users that  damage to files may occur with use or
  202. misuse of his program,  and in executing  the program, the  user
  203. fully understands these risks and this disclaimer.
  204.  
  205.      Don't worry --  there is  little  risk of  damage resulting
  206. from this program's  use  as  long  as  you  use  it  correctly.
  207. However, if you try  to make it mess up,  it probably will. Just
  208. remember that it isn't my fault if you misuse my program.
  209.  
  210.   Also, all trademarks used, demarcated by (R), are acknowledged
  211. to be property of their respective owners.
  212.  
  213.  
  214.  
  215.  
  216.  
  217. License:
  218.  
  219.  
  220.      You may use Protect! EXE/COM for the purposes of evaluating
  221. it (after  understanding the  disclaimer and the  documentation)
  222. for 30 days.  No files protected by Protect! EXE/COM during this
  223. trial  period may  be distributed  to  other  computers  at all,
  224. commercially or non-commercially.  If you find  Protect! EXE/COM
  225. to be of use to you, you must register Protect! EXE/COM with the
  226. author.  Government,  educational,  and commercial  institutions
  227. must register this program with the author prior to use  (please
  228. contact me for quantity discounts).  Sysops,  user groups,  disk
  229. vendors, and other similar organizations may distribute Protect!
  230. EXE/COM   provided  that   no  files  are   excluded   from  the
  231. distribution  and  that  no   more  that   $10  is  charged  for
  232. distribution.
  233.  
  234.      In addition, because this is encryption software,  it *must
  235. not* be distributed to countries or regions with U.S. encryption
  236. export restrictions including:  Afghanistan,  Albania, Bulgaria,
  237. Cambodia,  Cuba,  Czechoslovakia,  Hungary,  Iran,  Iraq, Libya,
  238. North Korea,  China, Poland,  Romania, Syria,  the former  USSR,
  239. Vietnam, or Yemen (so in other words,  next time you have to fly
  240. to Baghdad on  business,  you  have  to  leave  Protect!  behind
  241. <Grin>).
  242.  
  243.  
  244.  
  245. How Does Protect! EXE/COM Stand Up To Other Utilities?
  246.  
  247.  
  248.      Protect! EXE/COM's first concern is security. No other
  249.  
  250.  
  251.                                                                 Page 5
  252.  
  253.  
  254.  
  255. program emphasizes  the file integrity  checking using a  CRC to
  256. the extent that  Protect!  does.  Try  PKLITing an EXE file  and
  257. change a byte or two in the  middle of  the file  (find parts of
  258. text that  you can  still  recognize slightly).  As  long as the
  259. program doesn't crash (it may if you've messed too much with the
  260. code  portions),  PKLITE  won't  notice your  changes at all.  A
  261. hacker can also decompress a program  compressed with  PKLITE or
  262. LZEXE quite easily  -- even if a  program is compressed with the
  263. supposedly "invincible" -E option on the professional version of
  264. PKLITE. After decompressing,  any hacker can change your program
  265. (remove copyright screens,  disassemble  code, etc...), compress
  266. it again, and spread it around, possibly damaging  your profits,
  267. your reputation,  and others' computers  (I hope you have a good
  268. disclaimer...). Fortunately, hacking is not quite  that rampant,
  269. but it still is a possibility  and a risk, and it is much better
  270. to pay a few dollars up-front to be safe than to be sorry in the
  271. future. Though NO software-only  (or even hardware-based,  as in
  272. the case of Everlock (R) and others)  protection program is 100%
  273. fool-proof,  I  am  pretty  sure  this  program is  the best for
  274. protecting  your  EXE  and COM  files.  Most  modifications  and
  275. "hacks" can't  be detected  and defended  against with  ordinary
  276. tools, and it is up to you to protect your programs.
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Technical Notes:
  283.  
  284.  
  285.      First of all, thank you to  everyone who  contributed anti-
  286. debug tricks and other  ideas for this version of  Protect. With
  287. these new ideas, Protect! can be much more secure and faster.  I
  288. have  dumped the old  mutation engine and replaced  it this time
  289. because the old one didn't always mutate correctly (I'll explain
  290. the mutation  engine  a little  further on).  I also was  extra-
  291. cautious on  compatibility  for this  version of Protect!  after
  292. having  so  many  problems with  Protect! v.4.0.  Prefetch-queue
  293. tricks are no longer used, despite their effectiveness,  because
  294. they  may not  work on  some  machines.  In  addition,  Protect!
  295. doesn't look for or  touch any 386 debugging  registers on a 386
  296. (despite  its  being  suggested  to me on  several  occasions to
  297. thwart  Soft-ICE)   because   that    can   upset   multitasking
  298. environments such as OS/2 (R) (which I happen to use).
  299.  
  300.  
  301.      Protect! v.5.0 adds something  in the neighborhood of 1k to
  302. the average,  depending on how long the CRC error message is and
  303. how the file is mutated by  the mutation engine.  Protect! v.5.0
  304. is definitely slower than v.4.0 because of its extra-complicated
  305. decryption loop,  but it should be much more  of a pain to trace
  306. through for a hacker  (it should  load at about  the same  speed
  307. than version 3.x did).  Also, once again, you should  not try to
  308. layer  multiple  copies  of Protect!  on top of a  file like you
  309. could in  v.4.0 -  the  new headers  have been  *sensitized*  to
  310. things  placed  on top  of them  and the  combined loading delay
  311. would start to become noticeable.
  312.  
  313.  
  314.                                                                 Page 6
  315.  
  316.  
  317.  
  318.  
  319.      Like v.4.0  and unlike  versions  before that,  Protect! is
  320. written  entirely  in  assembly  language,  mostly with  the A86
  321. assembler.  I write and test  Protect!  on  both my  486 DX/2-66
  322. running  OS/2  and  my  not-yet-buried  4.77/10  mhz  switchable
  323. "turbo" XT.  Protect!  has been  around for  a while,  with many
  324. people pitching in ideas to make it more secure. If you have any
  325. suggestions, questions, comments, etc.  about Protect!,  you can
  326. easily  contact me  through  Compuserve/Internet e-mail,  or  if
  327. nothing else, postal "snail mail" and I am usually  pretty  open
  328. to your comments.
  329.  
  330.  
  331.  
  332.  
  333.  
  334. The Mutation Engine:
  335.  
  336.  
  337.      The mutation engine that you have been hearing about (which
  338. I also didn't explain too well in v.4.0)  is an integral part of
  339. Protect.  Now that I  have  created  a pretty  powerful mutation
  340. engine  for Protect! v.5.0,  I think I should  at least  clarify
  341. what it is. 
  342.  
  343.      Many utilities that can attach  an envelope on an EXE (such
  344. as LZEXE or other file  compression utilities) have are the same
  345. every  time.  That  is  why  UNLZEXE or  generic  unprotect-type
  346. utilities are pretty easy to make.  When an unprotection utility
  347. (such as UNP)  unprotects  a  file,  it  creates  a  virtual-DOS
  348. environment  for  the file  to run  in until  the file  finishes
  349. decrypting  itself.  When  it  is done  decrypting  itself,  the
  350. unprotect utility simply writes what's in memory to disk and you
  351. have  your unprotected  file.  (not that difficult, right ?) The
  352. program  may use a  different key  every time  and even  encrypt
  353. itself, but all the  unprotect program  has to do is  just trace
  354. through that  until it gets to the entry point,  and all of that
  355. is for naught. 
  356.  
  357.      One of the tricks  for foiling  unprotection  utilities and
  358. debuggers lies is the fact that the unprotector must always have
  359. control over the Protected  program in order to  stop it when it
  360. is decrypted in memory.  If you remove the unprotector's control
  361. and subvert it  without  harming the  operating system  or other
  362. concurrently-running  applications,  you are  one  step ahead in
  363. protecting your programs.  However, an unprotect  program author
  364. can just instruct  his utility  to detect  the type  of file and
  365. blank out the  bytes that would  kill it when  it gets  to them.
  366. This would result into a high-tech cat-and-mouse game.
  367.  
  368.      The  reason  that it  isn't too  difficult  to make  normal
  369. unprotects  stems from the  fact that  the protector's  security
  370. envelope is the *same every time*. I coded a mutation engine for
  371. Protect!  to make sure  that the security  envelopes wouldn't be
  372. the same  every  single time a  new one  is encoded.  Instead of
  373.  
  374.  
  375.                                                                 Page 7
  376.  
  377.  
  378.  
  379. being able to "trace in"  a definite  number of bytes every time
  380. and being  able to  blank  out a  certain number  of bytes every
  381. time, these  figures will  have to vary  between each  and every
  382. different file that is Protected.  If you get one  original file
  383. and Protect on several different occasions, it will never be the
  384. same  length  or have  the same  content  every time  (there are
  385. thousands and thousands of different combinations).  My mutation
  386. engine randomly decides which machine  code instructions  to use
  387. every time:  it may  use a 3  or 4 byte  equivalent of a  2 byte
  388. instruction or vice-versa in any order that works. Because there
  389. are definite  rules for this mutation,  it will work every time.
  390. Since the mutated portion  is relatively  small (but effective),
  391. an extra  byte or two in a  spot will not  adversely affect  the
  392. performance  of  your  Protected  files.  Protect!  uses  both a
  393. mutation engine and a variety of  anti-debug tricks interspersed
  394. throughout to help attain maximum security for your files.
  395.  
  396.  
  397. Closing:
  398.  
  399.  
  400.      There is no doubt that Protect! EXE/COM  can save you time,
  401. effort,  energy,  and  money.   There  are  NO  "run-time fees,"
  402. "royalties," or  anything of  the type  attached to  the cost of
  403. Protect! EXE/COM;  you can protect  and distribute as many files
  404. as you  want with  Protect! EXE/COM  once you register (using as
  405. many different file integrity  error messages as you want).  The
  406. cost is $25 per copy of  Protect! EXE/COM  per machine. There is
  407. almost no  difference  between the  registered  and unregistered
  408. versions of Protect! EXE/COM except for the "beg screen" and the
  409. absence  of  CRC  error  message  customization  (actually,  the
  410. registered version intercepts  slightly different interrupts, so
  411. you're also a little safer with it because fewer people have the
  412. copy with customized interrupts).  The unregistered version uses
  413. a CRC error message saying that the  file was  protected with an
  414. UNREGISTERED  copy of  Protect! EXE/COM,  but nobody  should see
  415. that  message  in  the  first  place  because it  is illegal  to
  416. distribute  Protected  files  prior to  registration <Grin>.  My
  417. program is really  not crippled  except that I'm  sure you would
  418. want to use your own  CRC error messages instead of the one I've
  419. provided  (and  also to  get rid of  the "beg screen").  Besides
  420. that, I really do not like finding  programs Protected  with the
  421. unregistered version of my program being distributed.
  422.  
  423.  
  424.      There is a definite  threat of  hackers and  viruses on the
  425. loose and it is your  responsibility  to protect  your programs.
  426. What other utilities try, Protect! does.  While some compression
  427. utilities  such as  LZEXE and  PKLITE  that  are already  on the
  428. market  marginally  have the  ability to  protect your programs,
  429. only  Protect!  EXE/COM  has  the   ability  to   provide  solid
  430. protection.
  431.  
  432.      Thank  you  for  evaluating  Protect! EXE/COM and  actually
  433. reading the documentation -- Happy EXE/COM Protecting!
  434.  
  435.  
  436.                                                                 Page 8
  437.  
  438.  
  439.  
  440.  
  441.  
  442.      Please send any Inquiries to:
  443.  
  444.  
  445.                Jeremy Lilley
  446.                Protect! EXE/COM
  447.                2711 Oakview Circle
  448.                Medford, OR 97504
  449.                Compuserve: 75060,2074
  450.                Internet: 75060.2074@compuserve.com
  451.  
  452.