home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / CRACK / UCFCUP34.ZIP / README.CUP < prev   
Encoding:
Text File  |  1997-07-20  |  26.4 KB  |  610 lines

  1.                                                               Manual revision:
  2.                                                                     [17.08.97]
  3.  
  4.  
  5.                ▄███▄▀████▌▀████▌
  6.               ▄██ ▀▀▐▐███  ▐███
  7.               ████▄▄█▌██▌ ▄ ██▌    C·y·b·e·r·W·a·r·e
  8.               ▀██████▐███████▀
  9.                 ▀▀▀▀   ▀▀▀▀▀
  10.                                     featured by
  11.  
  12.                                     uNITED cRACKING fORCE [uCF]
  13.  
  14.  
  15.                                     proudly presents
  16.  
  17.  
  18.                    The ultimate executables unpacker
  19.  
  20.  
  21.                   CUP386 v3.4 - The Final DOS Version
  22.  
  23.  
  24.  
  25. 1. Introduction
  26.    ~~~~~~~~~~~~
  27.  
  28.     Yes, we know -- you're  too short  of time  and too busy to read  long
  29.   and  sophisticated readmes, so,  willing to make  your acquaintance with
  30.   our new product  as quick  and easy  as possible, we  won't describe its
  31.   advantages and features. We'll just ask you some questions:
  32.  
  33.     After spending some hours you've finally discover THAT phuken bit,
  34.      (you know what i'm talking about), but you may not alter either
  35.      protected or packed executable file?
  36.     You've found a program wich shows an art of coding; you'd like to
  37.      see how it has been coded and how it works. Oops! the program was
  38.      encrypted and you'll see only the garbage!
  39.     You're looking for a powerful debugger?
  40.  
  41.   Well, if  you've  answered "Yes!"  at least once - congratulations, this
  42.   is exactly what  you want,  so you may proceed  with the rest  of readme,
  43.   it won't take long and may come in handy.
  44.  
  45.  
  46. 2. Standard disclaimer, Distribution notice and Legal stuff
  47.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  48.  
  49.     Now goes the traditional phrase that program provided 'as is', without
  50.   warranty  of  any kind neither  expressed nor implied.  The  only  thing
  51.   CyberWare guarantees is that  we'll take  to our  consideration all your
  52.   flame, wishes, notices and congratulations.
  53.  
  54.     As a major part of CyberWare noncommercial products, CUP386  should be
  55.   distributed under "AnyWare" concept.  That means that  it's up to you to
  56.   choose *any* concept you like and  it's for you to  decide on what terms
  57.   and conditions you receive CUP386 and what to do then.
  58.  
  59.     *But* it's  forbidden to  modify CUP386.COM  itself  and  this manual,
  60.   moreover, every  instruction of this  proggy is  copyrighted property of
  61.   CyberWare.  Disassembling,  single-stepping   or  inserting  breakpoints
  62.   while in run-time is strictly prohibited  and may cause severe civil and
  63.   criminal penalties.
  64.  
  65. 3. Overview
  66.    ~~~~~~~~
  67.  
  68.      CyberWare Universal Unpacker  unpacks  old  M$-DOS  executable  files
  69.    processed  with *any*  EXE- or COM- file packer (cryptor or protector),
  70.    thus  making them  easy  for  further  analyzing,  hacking  or  reverse 
  71.    engineering.  Version 3.4  of  CyberWare  Universal  Unpacker  has been
  72.    carefully tested with follwing:
  73.  
  74.     PkLite v1.xx+  by PkWare, Inc.
  75.     Diet vx.x      by Teddy Matsumoto
  76.     LzExe vx.x     by Fabrice Bellard
  77.     TinyProg vx.x  by unknown Singapoure extermist
  78.     PgmPak vx.x    by Todor Todorov
  79.     HackStop v1.15 by Rose
  80.     WWPack v3.0+   by Piotr Warezak
  81.     Countless heap of packers who forgotten introduce themselves
  82.  
  83.    The enumeration above does not mean  that CUP386 won't work  with other
  84.    packers.  Moreover, CUP386  was  designed  to unpack executables packed
  85.    with *unknown* software.
  86.  
  87.  
  88. 4. How does CUP386 work?
  89.    ~~~~~~~~~~~~~~~~~~~~~
  90.    
  91.      A packed program cannot be  executed by CPU directly.  It requires to
  92.    be decompressed before. So, there always should be a code wich performs
  93.    such decompression (decryption or unprotection). 
  94.      CUP386 creates  a  virtual  DOS  environment  for  a  victim program; 
  95.    then it  performs single  stepping  (tracing)  through the  decryptor / 
  96.    decompressor / unprotector  until the  beginning of the  first original
  97.    program  opcode. Then it  will drop  unpacked  memory image  onto disk.
  98.    However,  because of specific structure of EXE files there is a need to
  99.    make at least  two such images  (taken from different  address spaces); 
  100.    CUP386  will perform  the second pass.  Finally, destination executable 
  101.    will be created using theese memory images.
  102.  
  103.    Note: An address  of the first opcode  related to the  original program
  104.          is called 'EntryPoint'.
  105.  
  106.  
  107. 5. How to use CUP386?
  108.    ~~~~~~~~~~~~~~~~~~
  109.  
  110.    CyberWare  Universal  Unpacker  must  be started  from  a command  line
  111.    according to the following syntax:
  112.  
  113.    cup386.com [d:][/path]Infile [[d:][/path]Outfile] /switch[es]
  114.  
  115.    where:
  116.  
  117.     InFile           = obligatory filename of source (packed) file;
  118.                        InFile has no default extension, it's up to you to
  119.                        supply a filename with valid extension.
  120.  
  121.     OutFile          = optional destination filename the file'll be expaned
  122.                        into; the default extension for OutFile is .CUP
  123.  
  124.     /switch[es]      = switches /1, /3 and /7 select the tracer type,
  125.                        you must specify ONE of them to get CUP386 working;
  126.                        other switches are optional.
  127.  
  128. 6. Command line switches
  129.    ~~~~~~~~~~~~~~~~~~~~~
  130.  
  131.    CyberWare Universal Unpacker v3.4 accepts the following switches:
  132.  
  133.       /1  = step by step real mode limitations tracer:
  134.             real mode int 01 tracer with interrupts redirection;
  135.             no antidebugging code handling, no advanced debugging;
  136.             apparently used for unpacking only;
  137.  
  138.       /3  = step by step 80386+ full featured tracer, V86 mode:
  139.             advanced multitasking tracer;
  140.             DRx registers emulation, allows trace external interrupts;
  141.             antidebugging code handling;
  142.  
  143.       /5  = SMM (System Management Mode) debugging:
  144.             unavailable in this version of CUP386;
  145.  
  146.       /7  = real mode Intel 80386 chip emulator:
  147.             about 200 times slower in compare to original CPU speed;
  148.             allows trace almost all realmode programs;
  149.             supports any kind of breakpoints;
  150.             cpu queue virtualization; 
  151.  
  152.    optional switches:
  153.  
  154.       //  = all symbols after double slash will be threated as a command
  155.             line for victim program.
  156.  
  157.       /l  = Enable "I'm Alive feature": CUP386 will flash NumLock led
  158.             while unpacking specified program.
  159.  
  160.       /d  = interactive tracer using built in debugger:
  161.             invokes a built in CyberWare Code Digger wich allows you
  162.             to find out an EntryPoint location by yourself.
  163.  
  164.       /p  = preserve general registers set at the EntryPoint:
  165.             creates an additional  code past the end  of unpacked program
  166.             using VIRI concept; such code will restore selected registers
  167.             before  resuming  execution  of  that program.
  168.             usage:
  169.  
  170.             /p000000001222222
  171.               ││││││││││││││└─ gs             ┐
  172.               │││││││││││││└── fs             │
  173.               ││││││││││││└─── ds             ├─ group A
  174.               │││││││││││└──── ss             │
  175.               ││││││││││└───── cs             │
  176.               │││││││││└────── es             │
  177.               ││││││││└─────── flags          ┘
  178.               │││││││└──────── edi/di         ┐
  179.               ││││││└───────── esi/si         ├─ group B
  180.               │││││└────────── esp/sp         │
  181.               ││││└─────────── ebp/bp         ┘
  182.               │││└──────────── ebx/bx/bl/bh   ┐
  183.               ││└───────────── edx/dx/dl/dh   ├─ group C
  184.               │└────────────── ecx/cx/cl/ch   │
  185.               └─────────────── eax/ax/al/ah   ┘
  186.  
  187.             each  digit position  after  /p  switch represents respective
  188.             register  (e.g. the  3rd  position represents  EDX  register)
  189.             depending  on  digit value CUP386 will  backup different part
  190.             of  selected  register:
  191.  
  192.               0 - register does not require backup
  193.               1 - backup only the low byte of a register (e.g. AL)
  194.               2 - backup low word of a register (e.g. CX)
  195.               3 - backup high byte of a register (e.g. DH)
  196.               4 - backup entire 80386 dword register (e.g. EBX)
  197.  
  198.             registers group A accept values 0 and 2
  199.             registers group B accept values 0, 2 and 4
  200.             registers group C accept the following: 0, 1, 2, 3 and 4
  201.  
  202.             for example, the following will backup CX, BH, ESP and FS:
  203.             /p02030400000002
  204.  
  205.             Note:   This switch  should be used when  original program is
  206.                     dependant  upon  startup  values  of  some  registers.
  207.  
  208.       /e  = use specified address (relative PSP) as an entry point:
  209.             forces  CUP386 to  make an entry point at  specified location.
  210.             usage:
  211.  
  212.             /e[XXXX:]YYYY[,passcount]
  213.  
  214.             YYYY -                hexadecimal offset value
  215.             XXXX -                hexadecimal segment value
  216.             passcount -           amount of times entry point should
  217.                                   be skiped.
  218.  
  219.             for example, /e0:100 (or /e100 or /e10:0) represent a default 
  220.             COM file entrypoint.
  221.  
  222.       /c  = use specified sequence of bytes to validate entry point:
  223.             this switch is used to validate entry point code.
  224.             usage:
  225.  
  226.             /c#xx[#xx...]
  227.  
  228.             each sequental #xx represents another byte of code
  229.             e.g. /c#B8#03#00 eqals MOV AX, 03h instruction.
  230.  
  231.             Hint:  Turbo Pascal programs have #9A as the first opcode of
  232.                    the program; Turbo C RTL has #BA instead. etc.
  233.  
  234.       /s  = use another method to determine executable image size:
  235.             forces CUP386 to use another method of image size calculation;
  236.             use  this switch  if CUP386 screws  up with  an error message:
  237.             CUP386 - Fatal Error: Couldn't compute the length of the file.
  238.             usage:
  239.  
  240.             /s
  241.  
  242.             you may specify the image size by yourself:
  243.  
  244.             /s????
  245.  
  246.       /r  = don't write overlay data to the destination:
  247.             EXE files have an  EXE header  wich one supplies the loadable 
  248.             image size (as well as another useful) information.  Any data
  249.             past the loadable EXE image is called Overlay Data.  It could
  250.             contain program resources such as images,  additional program 
  251.             code or whatever.  /r switch forces CUP386  do not  copy this 
  252.             data to the  destination executable.
  253.  
  254.             Note:   This gets only applied to EXE files.
  255.  
  256.       /t  = don't erase temporary files from the disk:
  257.             CUP386 will leave temporarry files ASAP.$1 and ASAP.$2 on the
  258.             disk; since these  files contain  native executable images --
  259.             expirienced  people  can examine  them to  determine precious
  260.             image length as well.
  261.  
  262.       /u  = don't update file attributes & date time:
  263.             by default CUP386 will update destination file attributes and
  264.             date/time so they will match source file. /u switch allows to
  265.             avoid this - destination file will receive an archive-bit and
  266.             current date/time stamp.
  267.  
  268.       /h  = don't remove irrelevant header data:
  269.             EXE files have  an EXE header wich  can   contain some  space
  270.             that usually is not used by anyone.  An example of irrelevant
  271.             header data is the following  string in the beginning of some
  272.             PkLited files:
  273.  
  274.                 "PKLITE Copr. 1990-91 PKWARE Inc. All Rights Reserved"
  275.  
  276.             Use this switch  only if original  program is  dependant upon
  277.             irrelevant data contents.
  278.  
  279.       /x  = produce an EXE file at destination:
  280.             by default CUP386 will autodetect the destination file type:
  281.             if   (image_len  <=  0FEFEh)  and   (entry_IP  =   100h)  and
  282.             (entry_CS  =  PSP) and (relocations  =  0) then this is a COM
  283.             file.  /x  switch  forces  CUP386 to  build  an  EXE file  at
  284.             destination  regardless  of  autodetection  result.
  285.  
  286.       /k  = don't reset keyboard.
  287.             normally,  you should never use this switch,  unless you have 
  288.             serious keyboard troubles; so, with some keyboard controllers 
  289.             this  switch  could be useful.
  290.  
  291.       /v  = load current video state and font instead of using predefined;
  292.             use this switch if you have incompatible VGA adaptor or if you
  293.             wish to use current memory font (e.g. to see national language
  294.             letters when browsing CCD data window)
  295.  
  296.             NOTE: used in conjunction with /d switch.
  297.  
  298.       /?  = display usage screen.
  299.  
  300. 7. Archive information and requirements
  301.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  302.  
  303.    CyberWare Universal Unpacker v3.4 archive contains following files:
  304.  
  305.    FILE_ID.DIZ             773  Description text file
  306.    CUP386.COM            37738  CyberWare Universal Unpacker executable
  307.    LOADFIX.COM             810  MS-DOS Loadfix utility for EXE-PACK
  308.    README.CUP            27010  Readme file you're currently reading
  309.  
  310.    CyberWare Universal Unpacker v3.4 requires the following:
  311.  
  312.        At least 80386 CPU;
  313.        MS-DOS version 5.0 or above;
  314.        VGA card is required for integrated debugger;
  315.        CUP386 takes about 60kb of conventional memory;
  316.  
  317. 8. Integrated debugger
  318.    ~~~~~~~~~~~~~~~~~~~
  319.  
  320.      The moment the decryptor is  giving control  to the original program
  321.    can  not be  100%  auto-detected.  That  why CUP386  has an integrated
  322.    debugger.   Expirienced   people   can    trace   trough   decryptor /
  323.    decompressor  /  unprotector  manually,   even  sometimes  faking  the
  324.    comparsion results  and redirecting  codeflow;  as soon as  EntryPoint
  325.    has  been  reached and manually  marked - CUP386 will  take care about
  326.    the rest of unpack process.
  327.  
  328.    ■ shortcuts
  329.      ~~~~~~~~~
  330.       BP     = breakpoint
  331.       BPX    = breakpoint on Exec
  332.       BPM    = breakpoint on Memory access
  333.       BPR    = breakpoint on Memory Range access
  334.       BPIO   = breakpoint on Ports access
  335.       BPINT  = breakpoint on Int Occurance
  336.  
  337.      CyberWare  Code  Digger  is similar to the Turbo Debugger by Borland
  338.    International,  so we won't describe  all the basic  debugger features
  339.    from the scratch, we'll just note some advantages instead:
  340.  
  341.      CCD has an implemented multitracers interface,  thus it is possible
  342.       to use different tracers within the same visual environment. As was
  343.       mentioned  before there  are three  different tracers  implemented:
  344.  
  345.        realmode tracer
  346.          + allows BIOS BPX, can run under any EMM
  347.          - supports only BPX, rather slow
  348.  
  349.        V86 multitasking (VMM386)
  350.          + supports BPX, BPM, BPIO, BPINT, advanced multitasking, fast!
  351.          - only four BPX supported
  352.  
  353.        i80386 CPU emulator (EMU386)
  354.          + supports any BP, CPU queue emulation, DRx emulation
  355.          - FPU opcodes aren't supported: emulates no FPU presence.
  356.  
  357.      CCD has an implemented  DOS MCB chains browser -- you will be able
  358.       to monitor any MCB allocation.
  359.  
  360.      CCD has an implemented Create Executable feature. It allows you to
  361.       create a working executable file from two memory dumps.
  362.  
  363.      CCD has an implemented  Data Tracking feature.  You can specify an
  364.       expression  -  the  data window  cursor  will always  follow  this
  365.       expression result.
  366.  
  367.      CCD  has  an  implemented  Operands Tracking feature.  Just  press
  368.       gray '/'  or  gray '*'  for  fast  navigate  data  cursor  to  the
  369.       Destinaton or Source operand address respectivelly.
  370.  
  371.      CCD disassembler has a smart recognization of JE (JNE) & JZ (JNZ).
  372.       While these  instructions  have  the  same opcodes they  will  be 
  373.       displayed in a different manner depending on prior instructions.
  374.  
  375.      CCD hooks no interrupts (except for RM tracer), thus allowing you
  376.       to trace any interrupt handler.
  377.  
  378.      Almost all Value Input Lines accept expressions.
  379.  
  380.      a lot of other advantages...
  381.  
  382.    ■ debugger keys
  383.      ~~~~~~~~~~~~~
  384.        F2        - toggle BPX at CPU window cursor location.
  385.        F4        - go to cursor:  place an unconditional BPX at CPU cursor
  386.                    location & run program.
  387.        F7        - trace   instruction.  goes   into  CALLS,   INTS,  etc.
  388.        F8        - step over  opcode. single step CALLS, INTS,  REPS, etc.
  389.        F9        - run program.
  390.        F10       - go to menu.
  391.      +
  392.      +
  393.        Alt-F2    - setup any allowed breakpoint.
  394.        Alt-F4    - back tracing. can be only activated after TRACE command.
  395.        Alt-F5    - switch to the user screen. press any key to switch back
  396.                    to the debugger.
  397.        Alt-F8    - run until return. Will work correct only when currently
  398.                    executing any procedure or software interrupt.
  399.        Alt-F9    - execute  to specified address:  place BPX there and RUN.
  400.        Alt-Lttr  - Alt-highlight  letter   activates   respective  menu or
  401.                    dialog  control.
  402.        Alt-X     - exit to OS immediatelly.
  403.      +
  404.      +
  405.        Ctrl-R    - position code cursor, following stack far frame (dword).
  406.        Ctrl-T    - tracking.  for DATA window only.  This one equals 'DEX' 
  407.                    command in WinICE.
  408.        Ctrl-Y    - clears contents of current input line.
  409.        Ctrl-O    - goto   origin.  cpu   window   -   using  CS:IP,  stack
  410.                    window  -  SS:SP.
  411.        Ctrl-P    - goto  previous  cpu position.  cursor keys do  not swap
  412.                    position.
  413.        Ctrl-F    - follow  code or data.  cpu window - try on JMPS, CALLS,
  414.                    INTS, etc.
  415.        Ctrl-G    - position cursor of current window to the specified addr.
  416.        Ctrl-C    - search for a caller. look through stack for return addr.
  417.        Ctrl-B    - position code cursor, following stack near frame (word).
  418.        Ctrl-N    - set up  CS:IP or SS:SP to  the  cursor position address
  419.      +
  420.      +
  421.        Ctrl-F2   - reset  program.  reload  program  from  the disk & goto
  422.                    the beginning.
  423.        Ctrl-F4   - invoke  calculator.   see  'calculator'  'expression'
  424.                    for details.
  425.        Ctrl-Brk  - equal to  Alt-F2  wihle  debugger is running, otherwise
  426.                    popup the debugger.
  427.      +
  428.      +
  429.        ScrollLock  - when debugger is not active - popup the debugger.
  430.      +
  431.      +
  432.        gray '/'  - selects destination (first) operand  of an instruction,
  433.                    depending   on   operand  type,  position  data  cursor
  434.                    according to:  operand  address  (for memory operands),
  435.                    register  value  (for registers),  native  offset  (for
  436.                    values).  for  JUMPS,  CALLS,  INTS  this  keypress  is
  437.                    equal to Ctrl-F.
  438.        gray '*'  - tries to apply the  above method to the source (second)
  439.                    operand; if second operand is absent - acts as gray '/'
  440.        gray '+'  - position data window cursor so it will match CPU window
  441.                    cursor address.
  442.  
  443.    ■ calculator and expressions
  444.      ~~~~~~~~~~~~~~~~~~~~~~~~~~
  445.  
  446.        built in calculator (Ctrl-F4) accepts any expression that is
  447.        complainant with Turbo Pascal standart. You can use any register
  448.        in expression (e.g. AX + 1) as well as String values (e.g. 'DM');
  449.        also you can use following additional operations:
  450.  
  451.          |       binary OR two operands
  452.          or      the same
  453.          &       binary AND two operands
  454.          and     the same
  455.          xor     binary XOR two operands
  456.          shl     shift [left operand] to left by [right operand]
  457.          shr     shift [left operand] to right by [right operand]
  458.  
  459.        logical operations:
  460.  
  461.          =       Compares left and right values, result will be set to
  462.                  True (1) if they're equal. Otherwise it'll be False.
  463.          >=      True if left operand is greater than or equal to right
  464.                  operand. unsigned comparsion.
  465.          =>      The same as above, but signed comparsion.
  466.          <=      True if left operand is less than or equal to right
  467.                  operand. unsigned comparsion.
  468.          =<      The same as above, but signed comparsion.
  469.          >       True if left operand is greater than right operand.
  470.                  unsigned comparsion.
  471.          <       True if left operand is less than right operand.
  472.                  unsigned comparsion.
  473.          <>      True if operands aren't equal.
  474.  
  475.        examples of logical expressions and results:
  476.          (24 / 4) * 2 <= 12                                 result:  1
  477.          (2 = 2) and (4 - 1 = 3) and (6 * 2 = 12)           result:  1
  478.          ((CX and 0) * 5 > 0) * 3                           result:  0
  479.  
  480.        Note:     by default  any vaule will  be threated  as hexadecimal
  481.                  value,  unless the last digit appears as 'd' character;
  482.                  in such  case it'll be  recognized as  decimal integer.
  483.  
  484.    ■ debugger notes / hints
  485.      ~~~~~~~~~~~~~~~~~~~~~~
  486.  
  487.        a. when adding MEMORY breakpoint while in V86 tracer - keep in mind,
  488.           that CPU requires such breaks to be dword aligned. Avoiding this
  489.           rule  may  cause unpredictible  breaks as  well  as no breaks at
  490.           specified location.
  491.  
  492.        b. when manually changing current CS:IP location wihle in EMU386 --
  493.           take that fact: virtual CPU queue will be reloaded.
  494.  
  495.        c. when tracing  HW interrupts,  'search caller'  and 'until return'
  496.           features won't work correctly, beacuse there could be no CALL or
  497.           INT  opcodes  followed   by  return  address.  To  determine  an
  498.           interrupted  opcode  address press  Ctrl-R. note, that  it won't
  499.           work  correct as  soon  as  any 'push'es  were made  since first
  500.           instruction of interrupt handler.  i.e. you may use this feature
  501.           when  return address  appears to  be exactly at SS:[SP]
  502.  
  503.        d. when  creating  executable, leaving 'Image Length'  field  empty
  504.           forces CUP386  to make additional  pass in order to determine an
  505.           executable image size automatically. otherwise, memory drop will
  506.           occur  according  specified  size  and  no extra  pass  will  be
  507.           performed.
  508.  
  509.        e. any  hexadecimal  value  could be  written without  zero  prefix,
  510.           except the  following: (they  will be threated as registers, not
  511.           values)  ah,  dh,  ch,  bh.  To  specify  a  value,  for example,
  512.           twelve - place  zero  before i.e. 0ch  or type it  as in decimal
  513.           form: 12d, etc.
  514.  
  515. 9. How to contact us
  516.    ~~~~~~~~~~~~~~~~~
  517.  
  518.    Latest  revision  of  CyberWare  Universal  Unpacker is  available  at
  519.    CyberQuest and other H-Net boards. You may as well request it by alias
  520.    GIMMECUP  from  its  origin   at  CyberQuest,  FidoNet   2:5020/1000.2
  521.    (published, 7+ (095) 377-6825).  You're  welcome  to send your notices
  522.    and wishes via netmail there as well as to sage386@hotmail.com.
  523.  
  524.    author: Alex Petroukine 2:5020/1000.2@fidonet, search for sage386 on IRC
  525.    voice: +7 (095) 550-3599, +7 (095) 377-6825
  526.    email: sage386@hotmail.com
  527.  
  528.  
  529. 10. Revision history
  530.     ~~~~~~~~~~~~~~~~
  531.  
  532.    dd-mmm-yy: CUP v1.2
  533.  
  534.  
  535.    dd-mmm-yy: CUP386 v2.9 - not publicy released
  536.                - first advanced version of CUP. uses 80386 specific opcodes
  537.                - reimplements CUP v1.2 with interrupts redirections in RM
  538.                - added EMU386 real mode intel i80386 chip emulator.
  539.                - added VMM386 multitasking V86 manager
  540.  
  541.    dd-mmm-yy: CUP386 v3.0 beta
  542.               - added DBG386 multi-tracers debugger wich uses MicroVision
  543.                 video library (~4kb) and has ala TurboDebugger interface.
  544.               - EMU386 was completely rewritten, improvements are amazing.
  545.               - VMM386 now implements full featured V86 debug kernel.
  546.               - some anti-antidebugging procedures are commented for beta
  547.                 release. 
  548.  
  549.    01-Sep-96: CUP386 v3.2
  550.               - fixed some major EMU386 bugs as well as other minor bugs
  551.               - added DRx regs emulation code (both VMM386 and EMU386)
  552.               - in compare to BETA release: uncommented some important
  553.                 anti-antidebugging procedures such as RUNNING LINE support
  554.               - reboot (not so useful though) and memory map features added
  555.               - both VMM386 and EMU386 allows trace external hardware ints
  556.               - VMM386 redirects bad opcode exception to the real mode
  557.  
  558.    24-Apr-97: CUP386 v3.3
  559.               - author birthday release! (applauses accepted ;)
  560.               - fixed 13 major bugs; (e.g. /c switch was absolutely ignored
  561.                 when tracing via EMU386, the real mode tracer /e switch was
  562.                 working wrong)
  563.               - VMM386 was rewritten. now it implements true advanced
  564.                 multitasking. (actually there're four different tasks
  565.                 running when tracing via VMM386).
  566.               - both VMM386 and EMU386 have been upgraded with enchanced
  567.                 DRX emulation and were carefully tested against most known
  568.                 dbg-trap methods.
  569.               - BPM, BPR, BPIO, BPINT setup dialog implemented.
  570.               - keyboard bugfix, now it is unblockable while single stepping.
  571.               - you may turn on 'Interactive Second Pass' mode.
  572.               - disassembler fixes as well as improvements:
  573.                 JE/JNE vs JZ/JNZ selection;
  574.  
  575. |   18-Aug-97: CUP386 v3.4
  576. |             - This is BUGFIX version, no new features were added.
  577. |             - This is the FINAL DOS version of CUP386.
  578. |               I won't support it anymore.
  579.  
  580. 11. Additional last minute info
  581.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  582.  
  583.    All products mentioned above are trademarks and copyrighted by their
  584.    respective owners.
  585.  
  586. |  Note that lines marked with "|" are updates to previous manual revisions.
  587.  
  588.    Authour would like to thank following persons:
  589.  
  590.     - Doctor (Yuri Romantsov // cyberware)
  591.     - Sandro (Oleg Pleshivtsev // cyberware)
  592.     - Sammy Hackee (Oleg Samohvalov // cyberware)
  593.  
  594.    greetings goes to:
  595.  
  596.     - CUP386 testers team
  597.     - MeteO, Professor Nimnul, Solar Designer, Kab, Rose
  598.     - All UCF members
  599.  
  600.    personal greetings:
  601.  
  602.     - Yuri Igumnoff
  603.     - Roman Magon
  604.     - Marquis de Soire
  605.     - Random (you frog!)
  606.  
  607.                                        kind regards Sage // CyberWare, UCF
  608.  
  609. <readme.cup Eof>
  610.