home *** CD-ROM | disk | FTP | other *** search
/ PC User 1996 August / PCUPLUS_AUG.ISO / toolkit / avp_pcu / userguid.doc < prev    next >
Encoding:
Text File  |  1996-06-27  |  116.6 KB  |  3,181 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. ──────────────────────────────────────────────────────────────────────────
  7.  
  8.                           ANTIVIRAL TOOLKIT PRO v2.2
  9.  
  10.                              by Eugene Kaspersky
  11.  
  12. ──────────────────────────────────────────────────────────────────────────
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.                                  USER'S GUIDE
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. ──────────────────────────────────────────────────────────────────────────
  31.  
  32.  
  33.  
  34.  
  35.  (c)Kami corp., Russia, 1992-1995.
  36. ──────────────────────────────────────────────────────────────────────────
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. Microsoft, MS-DOS and Windows are registered trademarks of Microsoft
  44. Corporation. Borland, Turbo C, Borland C++ and Turbo Vision are registered
  45. trademarks of Borland International. Other brand and product names are
  46. trademarks or registered trademarks of their respective holders.
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55. AVP is a powerful integrated antiviral package. This package can be used as
  56. conventional and/or professional (Pro) antiviral system. It consists of
  57. four programs:
  58.  
  59.  Antiviral scanner/disinfector  AVP.EXE
  60.  Antiviral scanner/disinfector with database editor  AVPRO.EXE
  61.  Antiviral resident monitor  AVPTSR.EXE
  62.  Antiviral utilities  AVPUTIL.COM
  63.  
  64. The main features of AVP antiviral are:
  65.  
  66.  - a great number (more than 5000) of viruses and virus families that
  67.    are detected and disinfected by AVP scanner;
  68.  
  69.  - Code Analyzer (heuristic scanner) detects new viruses or modified
  70.    variants of old ones;
  71.  
  72.  - Unpacking and Extracting Engine allow to scan packed and archive files
  73.    in on-the-fly mode;
  74.  
  75.  - Database Editor allows to add detection and disinfection information
  76.    about new viruses which are unknown to current version of AVP scanner;
  77.  
  78.  - professional utilities and antiviral monitor are included.
  79.  
  80.  
  81.  
  82.  
  83.  Table of Contents
  84.  ────────────────────────────────────────────────────────────────────
  85.  
  86.  1.     Installation and Getting Started with AVP
  87.  1.1.   System Requirements
  88.  1.2.   Using AVP to Detect, and Disinfect Viruses
  89.  1.3.   SET file and Updating Procedure
  90.  1.4.   Language Support File
  91.  1.5.   It Seems that I have an Infection. What Should I Do?
  92.  
  93.  2.     Antiviral Scanner/Remover  AVP
  94.  2.1.   Description and Features
  95.  2.1.1. Main Features of the Pro Version
  96.  2.1.2. Main Database Features
  97.  2.2.   Command Line Options and Errorlevels
  98.  2.3.   Interface and Menu Commands
  99.  2.3.1. Scan Commands  (Alt-S)
  100.  2.3.2. View Commands (Alt-V)
  101.  2.3.3. Edit Commands (ALt-E)   (Pro Version)
  102.  2.3.4. Tools Commands (Alt-T)
  103.  2.4.   Code Analyzer
  104.  2.5.   Unpacking Engine
  105.  2.6.   Extracting Engine
  106.  2.7.   Help System
  107.  2.8.   Messages
  108.  
  109.  3.     Antiviral Database             (Pro version)
  110.  3.1.   FILE Record
  111.  3.2.   JMP Record
  112.  3.3.   MEMORY Record
  113.  3.4.   SECTOR Record
  114.  3.5.   Link of Special Procedures
  115.  
  116.  4.     Antiviral Resident Monitor     (Pro version)
  117.  4.1.   Command Line Options
  118.  4.2.   Messages List
  119.  4.3.   Memory Map
  120.  
  121.  5.     Antiviral Utilities  AVPUTIL   (Pro version)
  122.  5.1.   Menu Utilities
  123.  5.1.1. Disassembler/Debugger
  124.  5.1.2. Dump Editor
  125.  5.1.3. Memory Map
  126.  5.1.4. Interrupt Map
  127.  5.1.5. Tracer
  128.  5.1.6. Interceptor
  129.  5.1.7. System Information
  130.  5.1.8. Files List
  131.  5.2.   Menu Object
  132.  5.3.   Menu Block
  133.  5.4.   Menu Setup
  134.  5.5.   GoTo system
  135.  5.6.   Hot Keys
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  ────────────────────────────────────────────────────────────────────
  142.  1.  Installation and Getting Started with AVP
  143.  ────────────────────────────────────────────────────────────────────
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. The installation procedure is quite simple. You should copy all files from
  152. the distributive floppy disk(s) to a newly created subdirectory of your
  153. hard drive (for example "C:\AVP") or use AVP from the floppy disk. If you
  154. already have a previous version of AVP you should overwrite it with the
  155. latest version. After copying this package to your hard disk it is ready to
  156. use.
  157.  
  158. This product is a professional antiviral toolkit. It contains four main
  159. executable files:
  160.  
  161.  - antiviral scanner/disinfector AVP.EXE
  162.  - antiviral scanner/disinfector/database editor AVPRO.EXE
  163.  - antiviral monitor AVPTSR.EXE
  164.  - antiviral utilities AVPUTIL.COM
  165.  
  166. If you are a NOVICE USER it is better to use antiviral scanner AVP.EXE only.
  167. By running AVP.EXE you can scan your disk(s) for a virus presence, and
  168. disinfect a virus if one is found. The AVP.EXE is an integrated environment
  169. scanner. The control for AVP.EXE is based on standard pop-up menus and
  170. dialog boxes. By pressing the F1 hot key or by using the Help menu you will
  171. get all the information you need.
  172.  
  173. If you are a SECURITY EXPERT you can use the professional features of this
  174. package the database editor, antiviral monitor, and utilities which are
  175. used for detecting, and analysis of new unknown viruses.
  176.  
  177.  
  178.  1.1.   System Requirements
  179.  ────────────────────────────────────────────────────────────────────
  180.  
  181.   Hardware:
  182.  
  183. Any PC-compatible computer with memory >= 640K. PC386+ with 1M or more of
  184. memory is recommended.
  185.  
  186.   Software:
  187.  
  188.  DOS version - 3.30 or above.
  189.  Minimum free conventional memory - 580K.
  190.  Minimum free file handles - 16.
  191.  
  192. It is recommended to install XMS driver to avoid memory problems.
  193.  
  194. To reach these conditions it is necessary to include in CONFIG.SYS file
  195. the lines:
  196.  
  197.  DEVICE=HIMEM.SYS
  198.  DOS=HIGH
  199.  FILES=32
  200.  
  201.  
  202.  
  203.  1.2.   Using AVP to Detect, and Disinfect Viruses
  204.  ────────────────────────────────────────────────────────────────────
  205.  
  206. When using AVP.EXE it loads the antiviral database(s) at first, and then
  207. scans the system memory for a memory resident virus presence. Next the Test
  208. Dialog Box appears on the screen. Press the ENTER key to virus scan all
  209. your hard disks for viruses or point to the path of the files you want to
  210. virus scan for example (C:\TEST\).
  211.  
  212. If you want to change the virus scanning options you should press the Alt-S
  213. hot key to call the Setup Dialog Box.
  214.  
  215. To change the virus scanning path you should press the F9 hot key or
  216. select the Scan|Test menu. To cure infected files you should press Ctrl-F9
  217. hot key or select the Scan|Cure menu.
  218.  
  219. To exit AVP.EXE press the standard Alt-X hot key or select Scan|Exit menu.
  220.  
  221.  
  222.  1.3. SET file and Updating Procedure
  223.  ────────────────────────────────────
  224.  
  225. The SET file (AVP.SET) contains a list of file names for the antivirus
  226. databases that are used for scanning, and disinfection of computer viruses.
  227. The SET file contains text strings (in ASCII format) that can be modified or
  228. changed with any text editor.
  229.  
  230. Each line contains only one file name. They are the names of the antivirus
  231. database files used to scan, and disinfect computer viruses. To add a new
  232. database file to the list it is necessary to insert a new line into the SET
  233. file, and type the new file name there. To exclude a database file or files
  234. from the list you should either delete the line, or place the charcter
  235. ";" at the beginning of the line.
  236.  
  237. For example:
  238.  
  239.  Database file      Comment <- Do not include this line in
  240.                     the SET file or any comments below.
  241.  -------------      --------------------------------------
  242.  
  243.  KERNEL.AVB         Kernel database
  244.  ;DISINF.AVB        Disinfection database, now excluded from the set
  245.  V_941104.AVB       Main anti-virus database
  246.  TROJAN.AVB         Trojan programs database
  247.  UNPACK.AVB         Unpacking engine
  248.  EXTRACT.AVB        Extracting engine
  249.  CA.AVB             Code Analyzer
  250.  
  251. AVP should not be executed without the file KERNEL.AVB because no viruses
  252. will be detected. This file name must be in the first line of the SET file.
  253.  
  254. To update your AVP package it is necessary to copy the update files into the
  255. AVP directory, and add the new database names to the SET file.
  256.  
  257. For example:
  258.  
  259. Database file       Comment
  260. -------------       -------------------------------------------------------
  261.  
  262.  KERNEL.AVB         Kernel database
  263.  V_941104.AVB       Main antivirus database
  264.  UP941113.AVB       Update database
  265.  UP941120.AVB       Update database that was just added
  266.  
  267.  
  268.  1.4. Language Support File
  269.  ──────────────────────────
  270.  
  271. All messages from the AVP scanner (including Pro version) are collected in a
  272. Language Support File (AVP.LNG). This file must be present in AVP directory.
  273. The AVP scanner will not run if it cannot find the LNG file in the AVP
  274. directory.
  275.  
  276. The default LNG file contains messages in English. To force AVP to use
  277. another language you should overwrite the default AVP.LNG (English) file
  278. with the language you want to use. To obtain a LNG file with the language
  279. you want to use contact the AVP dealer in your country.
  280.  
  281.  
  282.  1.5.  It Seems that I have an Infection. What Should I Do?
  283.  ────────────────────────────────────────────────────────────────────
  284.  
  285. The first step is executing AVP.EXE to virus scan all the programs files
  286. (executable/batch/SYS/overlay), and sectors of your disks including
  287. floppies disks. If the infected files/sectors are found, run the Cure
  288. process.
  289.  
  290. If the infections are not found you should press the "Alarm!" button in
  291. Setup dialog box, and virus scan all your disks again. If AVP.EXE displays
  292. any warning messages you should call the system programmer, security
  293. expert, or contact us via E-Mail to send one of these infected files to us
  294. for analysis.
  295.  
  296. For more information see the topic "Computer viruses detection, and removal
  297. methods" of the AVP.EXE Help system.
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  ────────────────────────────────────────────────────────────────────
  304.  2.  Antiviral Scanner/Remover  AVP
  305.  ────────────────────────────────────────────────────────────────────
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313. The AVP.EXE antiviral scanner tests, and disinfects files, and system disk
  314. sectors that are infected by known viruses, and checks them for
  315. suspicious code. You can read the descriptions of the known viruses in
  316. the Help system topics.
  317.  
  318.  
  319.  2.1.   Description and Features
  320.  ────────────────────────────────────────────────────────────────────
  321.  
  322. The AVP.EXE antiviral scanner checks for a virus presence in:
  323.  
  324.  - system memory
  325.  - files including packed and archive
  326.  - hard disk sectors containing the Master Boot Record
  327.  - disk sectors containing the Boot sector
  328.  - File Allocation Table
  329.  
  330. The main features of AVP.EXE are:
  331.  
  332. - removing of viruses from files, and system sectors. We recommend to
  333. restore the infected files from the backup copies but if it's impossible
  334. the AVP.EXE antiviral restores the infected objects to their original form
  335. (if it is possible) or in a form closest to the original one.
  336.  
  337. - possibility to scan inside of packed and archive files.
  338.  
  339. - the AVP.EXE scanner checks files, and system sectors for new unknown
  340. viruses the are not included in antiviral database. This feature is
  341. available with the Code Analyzer routine. According to several test results
  342. this routine detects about 80% of unknown viruses.
  343.  
  344. - two different modes of file scanning: the default mode, and the
  345. redundant one. The default mode is enough in most of cases. By using the
  346. default mode the antiviral scanner analyses the file header, and the file
  347. entry point(s). The redundant search mode causes complete scanning of
  348. entire file instead of scanning the file's entry point(s) only. This is
  349. necessary in case of a infection by a specific virus or in case of a
  350. incorrect infection.
  351.  
  352. - the test, and disinfection of the system memory. It's recommended to boot
  353. from the virus-clean system floppy before scanning the files, and sectors
  354. for viruses. It is necessary for a guaranteed absence of viruses in the
  355. memory because the memory resident virus can prevent the file
  356. recovery, and even reinfection of the files after scanning. There are memory
  357. resident viruses which wait for a antiviral program execution, and when
  358. this antiviral scanning is started these viruses damage disk sectors (see
  359. the virus "Caz".
  360.  
  361. - the files, and system sectors can be tested for the changes in their
  362. bodies by using control sum (CRC) algorithm. If used the next antiviral
  363. scanning using AVP.EXE finds the differences between the old, and new
  364. control sums then AVP.EXE displays a corresponding message.
  365.  
  366. - the AVP.EXE antiviral scanner checks whether it's own file has been
  367. modified, and if it detects changes AVP.EXE reports about it.
  368.  
  369. - the powerful Help-system that contains the complete information about the
  370. viruses, and the methods about the removing the viruses. It's possible to
  371. view demo-effects while reading the virus descriptions if the virus
  372. manifests itself by a visible sign.
  373.  
  374. - the support of the XMS memory, mouse, screen format 43/50 lines for
  375. EGA/VGA adapters. The antiviral scanner allows you to change, and save
  376. these settings.
  377.  
  378.  
  379.  2.1.1. Main Features of the Pro Version
  380.  ────────────────────────────────────────────────────────────────────
  381.  
  382. The antiviral scanner/remover of the Pro version contains the antiviral
  383. database editor. By using this editor it's possible to create new antiviral
  384. database(s), and insert records with detection, and disinfection
  385. information for new viruses. By using these records the computer expert can
  386. direct the antiviral scanner to detect, and remove new unknown viruses.
  387.  
  388. The antiviral database contains four types of records:
  389.  
  390. JMP: calculation of the Entry Point into the file or sector body
  391.  
  392. FILE: information about detection, and disinfection of file viruses
  393.  
  394. SECTOR: information about detection, and disinfection of boot viruses
  395.  
  396. MEMORY: information about detection, and disinfection of the memory
  397. component of TSR viruses
  398.  
  399. The database fields are appending in the semi-automatical mode: it's enough
  400. to point where to search for the virus, how to remove it, and to point to
  401. the infected file or the file containing the infected sector. The
  402. information about this virus will be inserted into the new database record.
  403.  
  404.  
  405.  
  406.  2.1.2. Main Database Features
  407.  ────────────────────────────────────────────────────────────────────
  408.  
  409. The main database features are:
  410.  
  411. - using the control sums instead of the virus masks. The checksums of the
  412. parts of the virus code are placed into the records instead of the parts of
  413. code for comparing. This feature will decrease the size of the database,
  414. and increase scanning speed;
  415.  
  416. - several standard methods of the virus detection, and disinfection.  More
  417. than 10 standard methods of the virus disinfection make the procedure of
  418. including the new records quite easy;
  419.  
  420. - dynamical linker of the special subroutines. This feature is used with
  421. detection, and disinfection of viruses that use encryption or nonstandard
  422. methods of infection. In these cases it's enough to write one's own C or
  423. Assembler program that decrypts/disinfects the virus, compile this program
  424. into OBJ-file, and insert this OBJ-file into the database record. These
  425. special subroutines will be linked with main EXE-module, and would be
  426. called during processing of the database records;
  427.  
  428. - calls to external functions. These special subroutines of the database
  429. can access external names (constants, functions, arrays and structures).
  430. The external names are divided into standard (they are defined into the
  431. main EXE-module), and special (they are defined by user in one of the
  432. database records). The viruses from one virus family that use the same
  433. decryption algorithm can be decrypted by a special subroutine that is
  434. called with different arguments from several records. In this case it is
  435. necessary to write only a decryption subroutine, compile it, append it into
  436. the one of the database records, and then to call that routine from other
  437. database records.
  438.  
  439.  
  440.  
  441.  2.2.   Command Line Options and Errorlevels
  442.  ────────────────────────────────────────────────────────────────────
  443. When called from the DOS prompt AVP.EXE and AVPRO.EXE support the following
  444. format:
  445.  
  446.  AVP [OPTIONS ...] [file or disk NAME]
  447.  
  448.  Options
  449.  ───────
  450.  
  451. "/T" switch directs the antiviral scanner to scan files, and sectors for the
  452. presence of viruses. In this mode, searching for viruses, and virus-like
  453. blocks in files, and disk boot sectors is carried out. This switch is "ON"
  454. default.
  455.  
  456. "/-" switch directs the antiviral scanner to disinfect files, and boot sectors
  457. infected by viruses. The antiviral scanner recovers files, and sectors in
  458. their original form (if possible), or in a form closest to the original one.
  459. The infected boot sector, and MBR are overwritten by MS-DOS 6.0 system sectors
  460. if it is impossible to restore them to their original form.
  461.  
  462. "/W[A][=filename]" directs tells the antiviral scanner to save all messages
  463. displayed in the scan windows into a report file. The "Filename" parameter
  464. is the name of the report file, the default name is AVP.MSG. "/WA" switch
  465. directs the antiviral scanner to append the report to the existing one,
  466. otherwise the report file will be overwritten.
  467.  
  468. "/C" switch directs the antiviral scanner to detect modification in objects
  469. by using CRC table if this table has been created beforehand.
  470.  
  471. "/D" switch directs the antiviral scanner to run in daily mode. In this mode
  472. AVP.EXE will process the antiviral scanning on the first execution only
  473. (in this day). It will not scan for viruses if it is executed again. This
  474. option is recommended for using the antiviral scanner from the AUTOEXEC.BAT
  475. file only. Note: The antiviral scanner will test it's host file (AVP.EXE or
  476. AVPRO.EXE) on every execution.
  477.  
  478. "/M" switch directs the antiviral scanner to skip memory testing.
  479.  
  480. "/P" switch directs the antiviral scanner to skip testing of the local disks
  481. Master Boot Records.
  482.  
  483. "/B" switch directs the antiviral scanner to skip testing of the Boot Sectors
  484. of local logical drives.
  485.  
  486. "/F" switch directs the antiviral scanner to test the File Allocation Table
  487. of local logical drives.
  488.  
  489. "/O" switch directs the antiviral scanner to skip disinfection of the
  490. read-only files.
  491.  
  492. "/S" switch turns off the beep signal.
  493.  
  494. "/TMP=path" switch points to the directory for temporary or swap files.
  495. The environment variable TEMP (or TMP) is used by default. If neither the
  496. "/TMP" switch or environment variable are defined, the program's
  497. home directory is used for temporary, and swap files.
  498.  
  499. "/X" switch directs the antiviral scanner not use XMS memory. If you
  500. experience conflicts with some memory managers you should disable the using
  501. of XMS memory.
  502.  
  503. "/Y" switch directs the antiviral scanner to skip the dialog messages.
  504. This option is recommended for using the antiviral scanner in batch mode.
  505.  
  506. "/Q" switch directs antiviral scanner to exit to the DOS prompt after
  507. virus scanning, otherwise the main antiviral menu will be invoked.
  508. This option is recommended for using the antiviral scanner in
  509. batch mode.
  510.  
  511. "/?" switch directs the antiviral scanner to display the command-line help,
  512. and return to the DOS prompt.
  513.  
  514. "NAME" parameter is the list of disk letters and/or file names which
  515. should be virus scanned. It is possible to use the wildcard symbols "?", and
  516. "*" in filenames, and wildcards instead of disk letters. When only the name
  517. of a disk has been specified, for example "A:", then the files with default
  518. extensions of the specified disks will be virus scanned. Other settings are
  519. loaded from AVP.INI file.
  520.  
  521.  Examples:
  522.  
  523.  C:\COMMAND.COM - to virus scan C:\COMMAND.COM file
  524.  C:\*.COM       - to virus scan all COM-files of C: drive
  525.  C:*.*          - to virus scan all files of C: drive
  526.  C: D: E:*.COM  - to virus scan all files with default extensions of C: and D:
  527.                   drives, then scan all COM-files of E: drive
  528.  *:             - to virus scan all files with default extensions of
  529.                   all logical hard disks (C:, D:, ...)
  530.  
  531.  
  532. Example of using AVP.EXE amd AVPRO.EXE from DOS command line:
  533.  
  534.  AVP.EXE /T /W C:*.* D:\MY_PROG\*.EXE D:*.COM /Y /Q
  535.  
  536. This set of parameters directs AVP.EXE to virus scan all files of drive C:,
  537. then virus scan all *.EXE files of drive D: in directory D:\MY_PROG, and
  538. there after all *.COM files of drive D:. The report will be saved into the
  539. AVP.MSG (default) file. When the virus scanning is finished AVP.EXE will return
  540. to the DOS prompt.
  541.  
  542.  
  543.  Errorlevels
  544.  ───────────
  545. The results of virus scanning are available in return codes (DOS
  546. Errorlevel) for use in batch files:
  547.  
  548.   0 - No viruses were found.
  549.   1 - Scan is not complete.
  550.   3 - Suspicious objects were found.
  551.   4 - Known viruses were detected.
  552.   5 - All detected viruses were cured.
  553.   7 - File AVP.EXE is corrupted.
  554.  10 - Internal error in AVP.EXE program.
  555.  
  556.  
  557.  
  558.  2.3.   Interface and Menu Commands
  559.  ────────────────────────────────────────────────────────────────────
  560.  
  561. This program has a standard Turbo-Vision user interface. Press the F10 hot
  562. key to activate the menu system. Use the right-left up-down, and enter keys
  563. to select an item. Then the submenus are displayed. Use the up-down, and
  564. enter keys to select an item:
  565.  
  566.     Scan  (Alt-S)
  567.     View  (Alt-V)
  568.     Edit  (ALt-E)  (Pro version)
  569.     Tools (Alt-T)
  570.  
  571.  
  572.  2.3.1. Scan Commands  (Alt-S)
  573.  ────────────────────────────────────────────────────────────────────
  574.  
  575. With the Scan menu (Alt-S) you can test and/or disinfect files, and disk
  576. sectors.
  577.  
  578.  
  579.  Scan│Test (F9)
  580.  ────────────────────────────────────────────────────────────────────
  581.  
  582. With the Test command (F9) you can virus scan pointed objects for a virus
  583. presence. Several messages will appear in the information windows.
  584.  
  585. The Start Dialog Box appears before the test/cure procedure:
  586.  
  587.  ╔═[■]═════════════ Test ══════════════════╗
  588.  ║                                         ║
  589.  ║   Path _c:________________________      ║
  590.  ║                                         ║
  591.  ║                                         ║
  592.  ║        OK   ▄   Setup  ▄   Cancel ▄     ║
  593.  ║      ▀▀▀▀▀▀▀▀   ▀▀▀▀▀▀▀▀   ▀▀▀▀▀▀▀▀     ║
  594.  ╚═════════════════════════════════════════╝
  595.  
  596. The "Path" field contains the list of disk letters and/or file names which
  597. should be virus scanned.  It is possible to use the wildcard symbols '?'
  598. and '*' in filenames and wildcard '*' instead of disk letter. When only the
  599. name of a disk has been specified, for example 'A:', then the files with
  600. default extensions of the specified disk will be virus scanned. Other
  601. settings are loaded from AVP.INI file.
  602.  
  603.  Examples:
  604.  
  605.  C:\COMMAND.COM - to virus scan C:\COMMAND.COM file
  606.  C:\*.COM       - to virus scan all COM-files of C: drive
  607.  C:*.*          - to virus scan all files of C: drive
  608.  C: D: E:*.COM  - to virus scan all files with default extensions of C: and D:
  609.                   drives, then scan all COM-files of E: drive
  610.  *:             - to virus scan all files with default extensions of
  611.                   all logical hard disks (C:, D:, ...)
  612.  
  613.  
  614.  Scan│Cure (Ctrl-F9)
  615.  ────────────────────────────────────────────────────────────────────
  616.  
  617. With the Cure command (Ctrl-F9) you can virus scan pointed objects for a
  618. virus presence, and cure it. Several messages will appear in the
  619. information windows.
  620.  
  621. The Request Dialog appears if the virus is detected while curing.
  622.  
  623.  ╔═[■]═════════════ Cure Request ═════════════════╗
  624.  ║                                                ║
  625.  ║  File:   E:\VIRUS\v.com                        ║
  626.  ║                                                ║
  627.  ║  Virus:  Yankee                                ║
  628.  ║                                                ║
  629.  ║      Cure    ▄     Delete   ▄      Skip    ▄   ║
  630.  ║    ▀▀▀▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀▀▀▀   ║
  631.  ║    Cure All  ▄    Delete All▄     Cancel   ▄   ║
  632.  ║    ▀▀▀▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀▀▀▀   ║
  633.  ╚════════════════════════════════════════════════╝
  634.  
  635. The commands are:
  636.  
  637.  Cure        - to cure this file
  638.  Cure All    - to cure all the files without request
  639.  Delete      - to delete the infected file
  640.  Delete All  - to delete all the infected files
  641.  Skip        - to skip curing this file
  642.  Cancel      - to cancel virus scanning
  643.  
  644.  
  645.  Scan│RAMCure
  646.  ────────────────────────────────────────────────────────────────────
  647.  
  648. With the RAMCure command you can cure the memory parts of the viruses.
  649. This operation can be performed automatically at the start of the program.
  650. See "Scan│Setup" also.
  651.  
  652.  
  653.  Scan│Cure & make CRC
  654.  ────────────────────────────────────────────────────────────────────
  655.  
  656. With the Cure & make CRC command you can virus scan, remove viruses, and
  657. create the CRC table at the same time. The CRC check is in use if the Use
  658. the CRC option in the Setup menu. It checks for modifications of the
  659. file/sector, and will accelerate the virus scanning about 2 times.
  660.  
  661.  
  662.  
  663.  Scan│Setup
  664.  ────────────────────────────────────────────────────────────────────
  665.  
  666. The Setup command brings Setup Dialog, and you change the different options
  667. if it is necessary.
  668.  
  669.  ╔═[■]═════════════════════════ Scan Setup ═════════════════════════════╗
  670.  ║                                                                      ║
  671.  ║   Path: _*:________________________          Options                 ║
  672.  ║                                               [X] Load for cure      ║
  673.  ║   Mask:                   Sector options      [ ] Beep               ║
  674.  ║    ( ) Programs            [X] MBR            [X] Show tree          ║
  675.  ║    (*) All files           [X] Boot           [X] Split messages     ║
  676.  ║    ( ) User defined:       [X] FAT            [X] Auto test dialog   ║
  677.  ║           *.exe *.com                                                ║
  678.  ║                           File options            Set options for:   ║
  679.  ║   Mode                     [ ] Subdirectories                        ║
  680.  ║    [X] Warnings            [X] Remote disks            Speed     ▄   ║
  681.  ║    [X] Code analyzer       [X] Packed files        ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ║
  682.  ║    [ ] Redundant scan      [X] Archive files        Reliability  ▄   ║
  683.  ║    [ ] Use CRC             [X] Cure readonly       ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ║
  684.  ║                                                       Alarm!     ▄   ║
  685.  ║   Objects                 Memory options           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ║
  686.  ║    [X] Sectors             [X] Interrupts                            ║
  687.  ║    [X] Files               [X] Buffers                               ║
  688.  ║    [X] Memory                                                        ║
  689.  ║                                 OK   ▄       Save  ▄      Cancel ▄   ║
  690.  ║                               ▀▀▀▀▀▀▀▀      ▀▀▀▀▀▀▀▀      ▀▀▀▀▀▀▀▀   ║
  691.  ╚══════════════════════════════════════════════════════════════════════╝
  692.  
  693.  Path
  694.  ────
  695. In this field you should type one or more path strings to be used for
  696. the virus scan procedure. See Start Dialog.
  697.  
  698.  Mask
  699.  ────
  700. The files that have these extensions will be virus scanned by default (when
  701. the file extensions are not pointed to directly in the "Path" field).
  702.  
  703. The standard setting is "Programs" which will direct virus scanning of the
  704. files with extensions:  *.BAT, *.COM, *.EXE, *.OV?, *.SYS.
  705.  
  706. The selection of "All files" directs the virus scanning of all files marked
  707. in "Path" field. This is necessary in case of an infection by viruses that
  708. infect files on their opening and/or closing.
  709.  
  710. When the "User defined" block is choosen only the files defined in
  711. corresponding field will be virus scanned.
  712.  
  713.  Mode
  714.  ────
  715. This box contains the options of main virus scanning modes. See also Scan
  716. Messages.
  717.  
  718. "Warnings" directs activation of additional check procedures. This will
  719. display a warning message if a file/sector contains the modified or
  720. corrupted body of the known virus or a suspicious set of instructions is
  721. found in memory while memory scanning.
  722.  
  723. "Code analyzer" directs activation of Code Analyzer engine.
  724.  
  725. "Redundant scan" directs complete virus scanning of entire file instead of
  726. virus scanning only the file's entry point(s). This feature is strongly
  727. recommended in case of a infection by viruses such as "3nop" which writes
  728. itself into the middle of the file. In other cases this mode is not
  729. recommended because it will make the virus scanning procedure several times
  730. slower.
  731.  
  732. "Use CRC" directs using the CRC table to detect modification of virus
  733. scanned objects. This table has to be created before using it by command
  734. Cure & make CRC.
  735.  
  736.  Objects
  737.  ───────
  738. This box contains the list of objects to scan.
  739.  
  740. "Sectors" directs virus scanning of system sectors depending on which
  741. "Sector options" are choosen.
  742.  
  743. "Files" directs virus scanning of disk files including System, Hidden, and
  744. Read Only files depending on the selection of the "File options".
  745.  
  746. "Memory" directs virus scanning of system memory including the High Memory
  747. Area (if it is necessary) depending on "Memory options" choosen.
  748.  
  749.  Sector options
  750.  ──────────────
  751. This box contains the list of system sectors to virus scan.
  752.  
  753. "MBR" directs virus scanning of all Master Boot Records (first disk
  754. physical sector) of all available local Hard Drives for known viruses, and
  755. suspicious code. These sectors are virus scanned if the "Path" string
  756. contains any hard drive letter.
  757.  
  758. "Boot" directs virus scanning of the Boot sectors of selected local logical
  759. drives for known viruses, and suspicious code. The boot sector is tested
  760. before the first disk file virus scanning.
  761.  
  762. "FAT" directs the virus scanning engine to check the File Allocation Tables
  763. for suspicious situations such as "pseudo-bad" sectors. See also Scan
  764. Messages.
  765.  
  766.  File options
  767.  ────────────
  768. This box contains the list of file virus scanning options. See also Scan
  769. Messages.
  770.  
  771. "Subdirectories" directs the virus scanning engine to process the
  772. subdirectory tree from the directory pointed to in the "Path" field.  If
  773. the disk name is entered in "Path" field ("C:") the scanning engine will
  774. check the files, and directories from root directory.
  775.  
  776. "Remote disks" directs the virus scanning engine to virus scan remote
  777. (network) drives if the "Path" field contains the string "*:" (all disks).
  778.  
  779. "Packed files" activates the Unpack Engine.
  780.  
  781. "Archive files" activates the Extract Engine.
  782.  
  783. "Cure readonly" directs disinfection of the Read Only files.
  784.  
  785.  Memory options
  786.  ──────────────
  787. This box contains two memory virus scanning options. See also Scan
  788. Messages.
  789.  
  790. "Interrupts" directs tracing, and checking disk and DOS interrupts. This
  791. routine can conflict with some antiviral memory resident utilities, and
  792. generate false alarms. In this case either disable the "Interrupts" option,
  793. or remove the antiviral utility from memory. Warning: some memory resident
  794. viruses cannot be detected if the "Interrupts" option is disabled.
  795.  
  796. "Buffers" directs checking the number of system buffers, and comparing this
  797. value with the number of string BUFFERS=xxx in CONFIG.SYS file. This routine
  798. displays a warning message if these values are different. Warning: some
  799. utilities such as QEMM change the format of the buffers list. The buffer
  800. checking routine does not work correctly in this case.
  801.  
  802.  Options
  803.  ───────
  804. This box contains miscellaneous options.
  805.  
  806. "Load for cure" directs the loading of the entire antiviral database into
  807. memory. If this option is disabled the main virus scanning engine will load
  808. only the data needed to detect viruses, and not load the data needed to
  809. disinfect them. In this case the antiviral scanner occupies less system,
  810. and XMS memory.
  811.  
  812. "Beep" directs the virus scanning engine to beep if the virus is found.
  813.  
  814. "Show tree" directs the virus scanning engine to display a tree of scanned
  815. directories.
  816.  
  817. "Split messages" directs the virus scanning engine to split the messages in
  818. two different windows: "Scan window" and "Checkup window". The Scan window
  819. will contain information about infected objects (files, sectors and memory)
  820. as well as warnings, and some other messages. The Checkup window will contain
  821. a list of clean objects. If this option is disabled all messages will be
  822. shown in the "Scan window".
  823.  
  824. "Auto test dialog" directs the virus scanner to display Start Dialog Box
  825. directly after execution from DOS prompt.
  826.  
  827.  Set option for
  828.  ──────────────
  829. We understand very well that there are too many different options for the
  830. NOVICE USER. To make the NOVICE USER's life more comfortable we have
  831. decided to include a few buttons which globally change the setup for
  832. different situations.
  833.  
  834. "Speed" sets the corresponding options to make the virus scanning process
  835. fast.
  836.  
  837. "Reliability" sets the options to virus scan with confidence.
  838. This option is default.
  839.  
  840. "Alarm!" should be used in case of an unknown virus which infects your
  841. computer, and cannot be found with other settings. Warning: if you have a
  842. large hard drive with thousands of files, and a lot of archives,
  843. virus scanning  with "Alarm!" can take several hours.
  844.  
  845.  Save button
  846.  ───────────
  847. By using this button you can save the setup settings into the configuration
  848. file AVP.INI.
  849.  
  850.  
  851.  
  852.  Scan│Save Report
  853.  ────────────────────────────────────────────────────────────────────
  854.  
  855. The Save Report command brings Report Dialog. You can save the virus
  856. scanning information in the text file or print it.
  857.  
  858.  ╔═[■]════════════════ Report ════════════════════╗
  859.  ║                                                ║
  860.  ║  To  ( ) Printer          [X] Statistics       ║
  861.  ║      (*) File             [X] Scan info        ║
  862.  ║      C:\AVP\AVP.msg       [ ] Check up info    ║
  863.  ║                                                ║
  864.  ║        OK   ▄     Save Setup ▄     Cancel ▄    ║
  865.  ║      ▀▀▀▀▀▀▀▀     ▀▀▀▀▀▀▀▀▀▀▀▀     ▀▀▀▀▀▀▀▀    ║
  866.  ╚════════════════════════════════════════════════╝
  867.  
  868. Switch 'To' is used for direct report to printer or file.
  869.  
  870. Options and buttons:
  871.  
  872.  Statistics    - include statistic information
  873.  Scan info     - include virus scan information
  874.  Check up info - include information about clean objects
  875.  Save Setup    - save the setup settings into the configuration file AVP.INI
  876.  
  877.  
  878.  Scan│Dos Shell
  879.  ────────────────────────────────────────────────────────────────────
  880.  
  881. With the DOS Shell command you can leave the program temporarily to perform
  882. a DOS command or run another program. To return to this program, type EXIT
  883. at the DOS prompt.
  884.  
  885.  
  886.  
  887.  Scan│Exit       (Alt-X)
  888.  ────────────────────────────────────────────────────────────────────
  889.  
  890. The Exit command (Alt-X) terminates the program AVP.EXE.
  891.  
  892. The program terminates automatically after scanning if command line
  893. includes the /Q option.
  894.  
  895. Errorlevels:
  896.  
  897.  0 - Viruses are absent.
  898.  1 - Scan is not complete.
  899.  3 - Suspicious objects are founded.
  900.  4 - Viruses are detected.
  901.  5 - All detected viruses are cured.
  902.  7 - File AVP.EXE is corrupted.
  903.  10- Internal error AVP.EXE.
  904.  
  905.  
  906.  
  907.  2.3.2. View Commands (Alt-V)
  908.  ────────────────────────────────────────────────────────────────────
  909.  
  910. The View menu (Alt-V) contains commands to close, move, and perform other
  911. window-management instructions. Most of the windows in this program support
  912. all standard window elements including scroll bars, close box, and zoom
  913. icons.
  914.  
  915.  
  916.  View│Scan Window     (F7)
  917.  ────────────────────────────────────────────────────────────────────
  918.  
  919. Choose the Scan Window (F7) to view the output of the main virus scan
  920. information, and any related messages. This window is opened automatically
  921. if any messages are directed into it.
  922.  
  923.  
  924.  View│Check Up Window     (Alt-F7)
  925.  ────────────────────────────────────────────────────────────────────
  926.  
  927. Choose the Check Up Window (Alt-F7) to view the output of files that have
  928. been virus scanned, and listed as "ok."  This window is automatically
  929. opened if any message are directed into it.
  930.  
  931.  
  932.  View│Statistics
  933.  ────────────────────────────────────────────────────────────────────
  934.  
  935. Choose the Statistics window to view statistical information about the
  936. virus scanning process.
  937.  
  938.  
  939.  View│Clear Messages
  940.  ────────────────────────────────────────────────────────────────────
  941.  
  942. Choose the Clear Messages (F8) to clear all messages in both the Scan, and
  943. the Check Up windows.
  944.  
  945.  
  946.  View│25/50 Lines  (Alt-F9)
  947.  ────────────────────────────────────────────────────────────────────
  948.  
  949. Choose the (ALT-F9) to change the video mode from 25/50 lines.
  950.  
  951.  
  952.  View│Zoom     (F5)
  953.  ────────────────────────────────────────────────────────────────────
  954.  
  955. Choose the Zoom (F5) to re-size the active window to the maximum size. If
  956. the window is already zoomed you can choose this command to restore it to
  957. its previous size.
  958.  
  959. You can also double-click anywhere on the window's title bar (except where
  960. an icon appears) to zoom or un-zoom the window.
  961.  
  962.  
  963.  View│Next      (F6)
  964.  ────────────────────────────────────────────────────────────────────
  965.  
  966. Choose the Next (F6) to cycle forwards through the windows of the
  967. desktop.
  968.  
  969.  
  970.  View│Close      (Alt-F3)
  971.  ────────────────────────────────────────────────────────────────────
  972.  
  973. Choose the Close (Alt-F3) to close the active window. You can also
  974. click the Close box in the upper right corner to close the window.
  975.  
  976.  
  977.  View│Resize      (Ctrl-F5)
  978.  ────────────────────────────────────────────────────────────────────
  979.  
  980. Choose the Resize (Ctrl-F5) to re-size, and move the active window. Use
  981. Up,Dn,Left,Right keys to move, and Shift-(Up,Dn,Left,Right) to re-size the
  982. window. Press ENTER when done.
  983.  
  984.  
  985.  
  986.  2.3.3. Edit Commands (ALt-E)   (Pro Version)
  987.  ────────────────────────────────────────────────────────────────────
  988.  
  989. Menu Edit (Alt-E) is used for editing the antiviral databases.
  990.  
  991.  
  992.  Edit│Open Base (F3)     (Pro version)
  993.  ────────────────────────────────────────────────────────────────────
  994.  
  995. The Open Base command (F3) displays the Open Base dialog box. With this
  996. dialog box you can select the base to edit with the Base Editor.
  997.  
  998. Keys:
  999.  
  1000.  Up,Dn,PgUp,PgDn - moving through the records
  1001.  Ins             - new record
  1002.  Del             - delete record
  1003.  Ctrl-Ins        - get record into clipboard
  1004.  Ctrl-Del        - cut record into clipboard
  1005.  Shift-Ins       - paste record from clipboard
  1006.  
  1007. Select record and press ENTER. Form Dialog appears, then you can modify
  1008. different fields in record. Use TAB to move through fields.
  1009.  
  1010.  
  1011.  Edit│Close Base         (Pro version)
  1012.  ────────────────────────────────────────────────────────────────────
  1013.  
  1014. The Close Base command is used for saving, and the closing the database.
  1015.  
  1016.  
  1017.  Edit│Save Base (F2)     (Pro version)
  1018.  ────────────────────────────────────────────────────────────────────
  1019.  
  1020. The Save Base command (F2) is used for the saving of the database.
  1021.  
  1022.  
  1023.  Edit│Save All (Ctrl-F2) (Pro version)
  1024.  ────────────────────────────────────────────────────────────────────
  1025.  
  1026. The Save All command (Ctrl-F2) is used for saving all the opened bases.
  1027.  
  1028.  
  1029.  Edit│Cut  (Shift-Del)   (Pro version)
  1030.  ────────────────────────────────────────────────────────────────────
  1031.  
  1032. The Cut command (Shift-Del) is used to cut the record into the clipboard.
  1033. You can use the Paste command to paste the record from the clipboard.
  1034.  
  1035.  
  1036.  Edit│Copy (Ctrl-Ins)    (Pro version)
  1037.  ────────────────────────────────────────────────────────────────────
  1038.  
  1039. The Copy command (Ctrl-Ins) is used for copying the record into the
  1040. clipboard. You can use the Paste command to paste the record from the
  1041. clipboard.
  1042.  
  1043.  
  1044.  Edit│Paste (Shift-Ins)  (Pro version)
  1045.  ────────────────────────────────────────────────────────────────────
  1046.  
  1047. The Paste command (Shift-Ins) is used to paste the record from the
  1048. clipboard. You can use the Copy command to copy the record into the
  1049. clipboard, and Cut command to cut the record into the clipboard.
  1050.  
  1051.  
  1052.  Edit│Active Bases (F4)  (Pro version)
  1053.  ────────────────────────────────────────────────────────────────────
  1054.  
  1055. The Active Bases command (F4) displays the dialog box used to control the
  1056. list of the antiviral bases which are active during scanning.
  1057.  
  1058.  
  1059.  2.3.4. Tools Commands (Alt-T)
  1060.  ────────────────────────────────────────────────────────────────────
  1061.  
  1062. The Tools menu (Alt-T) contains the commands to backup, and restore the
  1063. disk system areas.
  1064.  
  1065.  
  1066.  Tools│Backup system area
  1067.  ────────────────────────────────────────────────────────────────────
  1068.  
  1069. Choose the Backup system area command to make a backup copy of the system
  1070. area of the computer's CMOS information, the MBR of the first hard drive,
  1071. and the Boot sector of the Active partition.
  1072.  
  1073. This copy is stored in the file AVP.SBK of the A: drive (rescue disk).
  1074.  
  1075. To restore the system area in case of an infection by an unknown virus
  1076. choose the Restore system area command.
  1077.  
  1078.  
  1079.  Tools│Restore system area
  1080.  ────────────────────────────────────────────────────────────────────
  1081.  
  1082. Choose the Restore system area command to restore the system area of the
  1083. computer's CMOS information, the MBR of the first hard drive, and the Boot
  1084. sector of the Active partition from the backup copy in case of infection by
  1085. unknown virus.
  1086.  
  1087. The reserve copy must be previously stored by the Backup system area
  1088. command. This procedure creates the file AVP.SBK on A: drive (rescue disk).
  1089.  
  1090.  
  1091.  
  1092.  2.4.   Code Analyzer
  1093.  ────────────────────────────────────────────────────────────────────
  1094.  
  1095. The Code Analyzer (heuristic scanner) scans the code of algorithm branches
  1096. of the files, and disk boot sectors for virus-like instructions. This
  1097. routine displays several warning messages, if there are instructions such
  1098. as, file opening, and/or writing, interrupt hooking, and so on. The
  1099. messages of Code Analyzer are in the format
  1100.  
  1101.  : virus Type XXXX suspicion ([encrypted],tail)
  1102.  
  1103. where
  1104.  
  1105. "XXXX" is one of the strings:
  1106.  
  1107. Com - this file looks like it's infected by a unknown COM virus;
  1108.  
  1109. Exe - this file looks like it's infected by a unknown EXE virus;
  1110.  
  1111. ComExe - this file looks like it's infected by a virus which infects the
  1112. files of both COM and EXE formats;
  1113.  
  1114. ComTSR, ExeTSR, ComExeTSR - this file looks like it's infected by a memory
  1115. resident COM, or EXE, or COM and EXE virus;
  1116.  
  1117. Boot - this file looks like a file image of boot virus, or like a
  1118. boot-virus dropper;
  1119.  
  1120. Trojan  - this file looks like a trojan program.
  1121.  
  1122. "encrypted" indicates that a suspicious file, and/or sector contains a
  1123. decryption routine.
  1124.  
  1125. "tail" is the distance in bytes between file length, and the file (program)
  1126. entry point.
  1127.  
  1128. Of course, this engine theoretically can generate false alarms in some
  1129. cases, as well as, any heuristic algorithm, but we have tested this one on
  1130. a very large number of files, and it didn't have any one really false
  1131. alarm. If you experience false alarms on your computer please send us
  1132. samples of these files for us to analyze, or send us the names of the
  1133. files, and the corresponding packages to help us create a known false alarm
  1134. list.
  1135.  
  1136. Second, the Code Analyzer checks a lot of algorithm branches (including
  1137. several sub-branches) of code when virus scanning files. As the result, the
  1138. virus scanner works about two times slower with the Code Analyzer active.
  1139. This routine detects about 80% of our collection of viruses without the
  1140. main antiviral database, so we suppose that about 80% of new viruses will
  1141. be detected.
  1142.  
  1143. Third, the current version of the Code Analyzer does not remove viruses
  1144. from files, and it marks possible infections as "suspicious". For removing
  1145. new viruses call a technical expert or send us a sample by E-mail for
  1146. analysis. We will send back a small antiviral base to cure this virus as
  1147. soon it is possible (usually within two days).
  1148.  
  1149.  
  1150.  2.5.   Unpacking Engine
  1151.  ────────────────────────────────────────────────────────────────────
  1152.  
  1153. The utilities which compress the body of a executable file are quite
  1154. popular. They save a compressed file on a disk with self-uncompressing
  1155. code. On execution this code uncompresses (in memory) the body of host
  1156. program, and returns control to it.
  1157.  
  1158. The executable file infected by a virus can be compressed by different
  1159. versions of compression utilities. Ordinary antiviral scanners pass this
  1160. file as not being infected because this file does not contain a virus mask
  1161. - that mask is compressed, as well as, the body of host file. For complete
  1162. scanning it is necessary to uncompress the file before scanning. The
  1163. Unpacking Engine module of AVP 2.0 does this for different versions of the
  1164. most popular compression utilities such as DIET, PKLITE, LZEXE and EXEPACK.
  1165.  
  1166. When virus scanning the Unpacking Engine creates a temporary file, and
  1167. writes into it the uncompressed body of the host file. Then the Unpacking
  1168. Engine passes this temporary file to the virus scanning engine. If this
  1169. file is not infected, the virus scanning engine will delete the temporary
  1170. file after the virus scanning. If this file is infected by known virus,
  1171. it's possible (in the Cure mode of Scan menu) to remove the virus from the
  1172. temporary file (disinfect the file), and replace the original compressed
  1173. file with an uncompressed, and disinfected result.
  1174.  
  1175. The Unpacking Engine module does the same operations as above for some
  1176. versions of the immunization routines used by CPAV, and F-XLOCK immunizers.
  1177. This is necessary because the infected, and then immunized file has another
  1178. entry point, and it makes the virus detection procedure more difficult. By
  1179. using the Unpacking Engine it's possible to scan these types of files for
  1180. possible virus infections.
  1181.  
  1182. This module also detects some versions of executable file encryptors, such
  1183. as CryptCOM. These utilities encrypt executable files, and make it
  1184. impossible to detect a virus within them without decryption of the file
  1185. first.
  1186.  
  1187. The Unpacking Engine module will be updated for new versions of compression
  1188. utilities, immunizers, and encryptors in case of need.
  1189.  
  1190.  
  1191.  
  1192.  2.6.   Extracting Engine
  1193.  ────────────────────────────────────────────────────────────────────
  1194.  
  1195. The problem "viruses in archives" is one of the most difficult antiviral
  1196. problems. The infected file can sleep several years in some old archive,
  1197. and quickly spread upon extracting. If you use Pkware's PKZIP (.ZIP) or ARJ
  1198. Software's (.ARJ) you can detect viruses within these archives, and protect
  1199. yourself from this situation.
  1200.  
  1201. When scanning compressed archives the Extracting Engine extracts the files
  1202. from the archive by masking them into a temporary file, and then passing it
  1203. to the virus scanning engine. This temporary file will be deleted after
  1204. virus scanning.
  1205.  
  1206. Note: AVP does not disinfect the viruses in archives, but only detects
  1207. infected files. AVP cannot scan archives locked with a password.
  1208.  
  1209. Of course, if the infected file was encrypted by the CryptCOM utility, then
  1210. compressed with DIET or PKLITE, and then stored in ZIP or ARJ file, AVP
  1211. will detect it as infected.
  1212.  
  1213.  
  1214.  
  1215.  2.7.   Help System
  1216.  ────────────────────────────────────────────────────────────────────
  1217.  
  1218. Context sensitive Help System is available any time, except scanning, by
  1219. pressing the F1 key. The Alt-F1 combination brings previous help screen,
  1220. the Alt-P and Alt-N combinations bring previous/next topics.
  1221.  
  1222. Some of the viruses call the sound or video effects. These effects are
  1223. extracted from the virus bodies and included into the effect demonstration
  1224. database. It is necessary to press the Alt-D key in the Help windows for
  1225. call the demonstration, if this demonstration presents. To exit from
  1226. demonstration it is necessary to press the ESC key.
  1227.  
  1228. Some of viruses or the families of viruses call several effects. In this
  1229. case it is necessary to press the SPACE key to see or hear next
  1230. demonstration. Press the SPACE key also for accelerate the moving some of
  1231. the demonstration, for example, for demonstration of the falling letters by
  1232. "Cascade" viruses.
  1233.  
  1234. Attention! Some of the viruses cause not dangerous changes of the system
  1235. parameters while executing effects, for example, the timer value, the value
  1236. of some ports, etc. This can cause the incorrect executing of the next
  1237. effects or conflict with execution of background programs in multitasking
  1238. mode. Some of the viruses use direct writing to video memory and can crash
  1239. the system managers such as QEMM.
  1240.  
  1241. PLEASE leave multitasking environment (MS-Windows, OS/2) and disable system
  1242. managers (QEMM) before viewing of demo effects.
  1243.  
  1244. The demonstration of some video effects can be executed correct under
  1245. certain conditions, for example, on VGA or HERCULES monitor only. The
  1246. executing of this demonstration on the wrong type of adapter can cause the
  1247. hang-up of the computer. Recommended VGA adapter for executing the video
  1248. demonstrations.
  1249.  
  1250.  
  1251.  
  1252.  2.8.  Messages
  1253.  ────────────────────────────────────────────────────────────────────
  1254.  
  1255.  Scan Messages
  1256.  ─────────────
  1257.  
  1258.  : ok
  1259. No virus is found in this file/sector. This file/sector will not cause a
  1260. "warning" or "suspicious" message.
  1261.  
  1262.  : virus NAME detected
  1263. Virus NAME has been detected in this file/sector. To remove this virus you
  1264. should run the scan procedure in CURE mode.
  1265.  
  1266.  : virus NAME cured
  1267. Virus NAME has been removed from this file/sector or the TSR part of a
  1268. memory resident virus has been disinfected in the system memory.
  1269.  
  1270. It is not necessary to reboot the computer after CURE with AVP.EXE if
  1271. the virus was detected in system memory, but we recommend to reboot
  1272. computer anyway, and execute the virus scanner again in this situation.
  1273.  
  1274.  : virus NAME deleted
  1275. Infected file was deleted.
  1276.  
  1277.  : virus NAME cure failed
  1278. This file/sector is infected incorrectly by a virus, and the cure procedure
  1279. may destroy this file/sector. This message appears if the file/sector is
  1280. placed on a write protect disk also. You should replace these files with the
  1281. original ones (from a backup) or reinstall the DOS in case of a infected
  1282. sector.
  1283.  
  1284.  : virus NAME cure skipped
  1285. The cure procedure of the file/sector is skipped by user.
  1286.  
  1287.  : virus NAME cure cancelled
  1288. The cure procedure of the file/sector is cancelled by user.
  1289.  
  1290.  : virus NAME warning (tail)
  1291. The virus scanner displays this message if file/sector contains a modified or
  1292. corrupted body of a known virus or a suspicious set of instructions has
  1293. been found in memory. Tail is the distance in bytes between file length,
  1294. and file (program) entry point.
  1295.  
  1296.  : virus TYPE suspicious (encrypted,tail)
  1297. These messages are displayed by the Code Analyzer engine if a virus-like
  1298. set of instructions has been found in a file/sector.
  1299.  
  1300.  : EXE file but COM extension
  1301.  : COM file but EXE extension
  1302. The internal file format, and the file name extension are different.
  1303.  
  1304.  : pseudobad cluster NUMBER
  1305. The normal disk cluster is marked as bad on File Allocation Table.
  1306. This situation may be a warning of new boot virus infection.
  1307.  
  1308.  : I/O error
  1309. This message appears in cases of write protected disk / share violation /
  1310. unpacking errors / disinfection of a read-only file if the switch 'Cure read
  1311. only' is disabled in the Setup.
  1312.  
  1313.  : trace warning at xxxx:xxxx
  1314. Interrupt 13h or/and 21h handler(s) contains "virus-like" instructions.
  1315. This message may be a first signal of virus infection. In some cases this
  1316. message is displayed when the some uninfected programs are present in the
  1317. memory, for example the popular utility RELEASE.
  1318.  
  1319. If the 'trace warning' displays you should find out the program that caused
  1320. this message. It is necessary to analyze the memory map at the address
  1321. where the message pointed. Next is to comment out by using the REM
  1322. instruction different commands in the AUTOEXEC.BAT, and CONFIG.SYS files
  1323. while the message appears.
  1324.  
  1325. Attention! Some of the resident viruses stop the tracing. They reset or
  1326. hang-up the computer while tracing. It is necessary to be careful because
  1327. if the computer hangs up while tracing it can indicate that the memory
  1328. resident virus is present in the system memory.
  1329.  
  1330.  : Buffers warning: Config.sys:N1, really:N2
  1331. This is a message displayed during analysis of the number of system
  1332. buffers. You should be careful if the number of system buffers, and the
  1333. number of buffers of CONFIG.SYS file are different because the virus can
  1334. infect the DOS system areas.
  1335.  
  1336.  : packed file. Method XXXX
  1337. This message appears on processing of packed or immunized file.
  1338.  
  1339.  : archive file. Format XXXX
  1340. This message appears on processing of archive file.
  1341.  
  1342.  : unknown format
  1343. This message appears on processing of files packed or compressed with
  1344. unknown format or stored in archive with password.
  1345.  
  1346.  
  1347.  Scan Dialog Messages
  1348.  ────────────────────
  1349.  
  1350.  : This virus is not curable, and the infected file must be deleted
  1351.  : This sector is not curable, and must be overwritten with a standard one
  1352. These messages indicate that a file or sector is infected by a
  1353. not-disinfectable virus. You should delete all these files, and replace them
  1354. with backup copies or re-install the system on infected disk.
  1355.  
  1356.  : Delete all infected files?! Are you sure?
  1357.  : Delete all infected sectors and files?! Are you sure?
  1358. These messages are displayed when pressing the "Delete all" button in Cure
  1359. Request Dialog.
  1360.  
  1361.  : Could not open file
  1362. Error opening the file while scanning.
  1363.  
  1364.  : No memory to init tables. Redundant scan is not available
  1365. No free memory to allocate tables.
  1366.  
  1367.  : Can't use CRC from floppy drive
  1368. CRC tables are placed on floppy drive.
  1369.  
  1370.  : Wrong Path
  1371. Wrong path string for scanning.
  1372.  
  1373.  : Error with swap file
  1374. No free space for swap data or no free system handles for file. Check disk
  1375. free space or increase FILES= value in CONFIG.SYS file.
  1376.  
  1377.  
  1378.  Installation Messages
  1379.  ─────────────────────
  1380.  
  1381.  : File AVP.EXE is infected by virus
  1382. This message indicates that AVP.EXE executable file is infected.
  1383.  
  1384.  : File AVP.EXE is corrupted. Continue of execution can caused a lost of
  1385.    data. Continue?
  1386. This message warns about modification or corruption of the AVP.EXE file.
  1387.  
  1388.  : File NAME not exist
  1389. The database file not found.
  1390.  
  1391.  : No database in set
  1392. No SET file found.
  1393.  
  1394.  : The set of virus bases is out of date. You should update your antiviral
  1395.    software at least once in three months.
  1396. The databases are out of date.
  1397.  
  1398.  : Not enough free file handles. Insert line FILES=32 in CONFIG.SYS file.
  1399. No free file handles to create swap files.
  1400.  
  1401.  : Your system clock is not set to a correct date
  1402. The current system date value is wrong.
  1403.  
  1404.  
  1405.  Backup and Restore Messages
  1406.  ───────────────────────────
  1407.  
  1408.  : Insert rescue disk in A:
  1409.  : Backup file corrupted. Restore not complete
  1410.  : I/O Error. Restore not complete
  1411.  : I/O error. Backup not complete
  1412.  
  1413.  
  1414.  Database Messages
  1415.  ─────────────────
  1416.  
  1417.  : LINK name: need linked proc
  1418.  : Different pages in record
  1419.  : Large Offset in record
  1420.  : Error file format
  1421.  : This base is locked for edit
  1422.  : Error version number
  1423.  : Corrupted data in record
  1424.  : Record too large
  1425.  : Unknown record in base
  1426.  : Data is already being edited. Close form before deleting
  1427.  : Are you sure you want to delete this item?
  1428.  : Reload bases?
  1429.  : Cannot create file. Data not saved
  1430.  : Error opening file
  1431.  : Database has been modified. Save?
  1432.  : Form data has been modified. Save?
  1433.  : Unresolved external
  1434.  : Can't link FIXUPP 8X. All functions must be declared as "far"
  1435.  : Unknown FIXUPP type
  1436.  : Can't link Groups
  1437.  : Unknown OBJ record type
  1438.  : Large record
  1439.  : Effective part of OBJ module must be < 64K
  1440.  
  1441.  
  1442.  Other Messages
  1443.  ──────────────
  1444.  
  1445.  : Error with INI File
  1446.  : Out of Memory
  1447.  : Low memory to load help system
  1448.  : Reload bases for cure?
  1449.  : There are no XMS memory detected. To avoid memory problems
  1450.    we recommend to install XMS driver
  1451.  : Can't open temporary file
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  ────────────────────────────────────────────────────────────────────
  1459.  3.  Antiviral Database      (Pro version)
  1460.  ────────────────────────────────────────────────────────────────────
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466. The Antiviral Database (DB) is the file which contains the records of the
  1467. different types of infections. The main types of records are: MEMORY,
  1468. SECTOR, JMP, FILE.
  1469.  
  1470. The MEMORY record contains the information for searching, and disinfecting
  1471. memory resident viruses. The virus scanner checks the system memory for
  1472. memory resident viruses according to the list of MEMORY records, and if a
  1473. virus is detected, the scanner deactivates it in memory, and displays a
  1474. corresponding message.
  1475.  
  1476. The SECTOR record contains information for the searching, and disinfecting
  1477. boot viruses. The virus scanner checks, and disinfects boot sectors
  1478. according to the list of SECTOR records, and displays a messages if the
  1479. virus is found.
  1480.  
  1481. The FILE record contains information for the searching, and disinfecting of
  1482. file viruses. The virus scanner checks, and disinfects files according to
  1483. the list of SECTOR records, and displays a messages if a virus is found.
  1484.  
  1485. Records of type JMP are used for the calculation of the file (virus) entry
  1486. point. In EXE files the JMP record calculates the start address of the
  1487. module. In SYS files the JMP record calculates the STRATEGY & INTERRUPT
  1488. subroutines addresses, and in COM files, and boot sectors it analyzes the
  1489. code at the beginning of the file/sector.
  1490.  
  1491. The record contains fields, and the main types of fields are:
  1492.  
  1493.  Name
  1494.  Type (internal format of the file, MBR or BOOT sector)
  1495.  Area1: Page, offset and length of code to calculate the first checksum
  1496.  Area2: Page, offset and length of code to calculate the second checksum
  1497.  Pointers to special routines (decryption and disinfection routines)
  1498.  Method of disinfection
  1499.  
  1500. All digits in all fields of the database records are hexadecimal. JMP, and
  1501. MEMORY records contain the limited set of fields listed above.
  1502.  
  1503.  
  1504.  Field "Name"
  1505.  ────────────
  1506. Each record (excluding JMP ones, in which the Name field is comment only)
  1507. begin with the Name field. This field contains the string that is displayed
  1508. if the virus scanner detects a corresponding virus. An example of names are:
  1509.  
  1510.  Atomic
  1511.  Intruder.1331
  1512.  Jeru.Sunday.b
  1513.  
  1514. You are allowed to use any ASCII digits or characters in the Name excluding
  1515. spaces, and special characters: delimiter "." and "the same name"
  1516. identifier "#".
  1517.  
  1518. The Delimiter "." is used to separate the virus name with subnames, and
  1519. copy the part of previous name to current one. If the name begins from
  1520. point delimiter, it means that name of current record begins from first
  1521. subname of previous record. If the name begins from two point delimiters,
  1522. it means that the name begins from first, and second subnames of previous
  1523. record.
  1524.  
  1525. If the Identifier "#" is at the beginning of the record it forces the virus
  1526. scanner to use the name of the previous record. If the string begins with
  1527. the "#" identifier the rest of that string is not used. You can fill it
  1528. with comments if you like.
  1529.  
  1530. Examples:
  1531.  
  1532.  Record Name:      Output:
  1533.  --------------------------------
  1534.  Cascade.1701.a    Cascade.1701.a
  1535.  #                 Cascade.1701.a
  1536.  ..b               Cascade.1701.b
  1537.  .1704.a           Cascade.1704.a
  1538.  ..b               Cascade.1704.b
  1539.  #Cascade_Virus    Cascade.1704.b
  1540.  #Cascade_Memory   Cascade.1704.b
  1541.  
  1542.  
  1543.  Field "Type"
  1544.  ────────────
  1545. The TYPE field identifies the format of file, and where the virus scanner
  1546. searches for that virus (FILE record) or the type of system sector where
  1547. the virus scanner searches for a boot virus (SECTOR record).
  1548.  
  1549. The allowed types are COM, EXE, SYS, and NEW EXE in the FILE records, BOOT,
  1550. and MBR in the SECTOR records.
  1551.  
  1552. If the record is marked as COM, and EXE, the scanner will not check
  1553. SYS-files for that record, if the record is marked as SYS only, the scanner
  1554. will scan SYS-files only for that record.
  1555.  
  1556.  
  1557.  Pages
  1558.  ─────
  1559. When virus scanning the virus scanner puts the code of file or sector into
  1560. its internal pages (blocks of memory). There are several available pages:
  1561.  
  1562.  HEADER  - 400h bytes, file header code
  1563.  PAGE_A  - 400h bytes, entry point code
  1564.  PAGE_B  - 400h bytes, "second jump" code
  1565.  PAGE_C  - 1000h bytes, for using in special routines
  1566.  FILE    - virtual page, is used to reach the data
  1567.            that is out of other pages.
  1568.  
  1569. When virus scanning the system sectors or DOS executables the HEADER
  1570. contains the body of sector it scanned (200h bytes) or 400h bytes of code
  1571. from the file beginning. The PAGE_A contains 400h bytes (or rest of the
  1572. sector) from the entry point. It there is another JMP command in PAGE_A,
  1573. the 400h bytes of code where the "second jump" points, is placed in PAGE_B.
  1574.  
  1575. When virus scanning multi-entries files (such as SYS and NEW EXE files) the
  1576. virus scanner checks each entry many times, until the number of entries is
  1577. found. When scanning the code of entry, it is placed in PAGE_A, and code of
  1578. "second jump" is placed in PAGE_B.
  1579.  
  1580. If there are NEW EXE files two parts of file are virus scanned the DOS
  1581. component, and NEW component. When virus scanning of NEW component the code
  1582. of the NEW EXE Header it is copied into the page HEADER, and the other
  1583. pages are filled as written above.
  1584.  
  1585.       COM file          EXE/SYS file      NEW EXE file
  1586.       ┌───────┐         ┌───────┐         ┌───────┐
  1587.     ┌─│Page   │  EXE/SYS│Page   │   EXE   │       │
  1588.  JMP│ │HEADER │   header│HEADER │   header│       │
  1589.     │ │-------│         │-------│         │-------│
  1590.     │ │       │         │       │   NE    │Page   │
  1591.     │ │       │         │       │   header│HEADER │
  1592.     └>│-------│    Entry│-------│         │-------│
  1593.     ┌─│PAGE_A │       ┌─│PAGE_A │         │       │
  1594.  JMP│ │       │    JMP│ │       │    Entry│-------│
  1595.     │ │-------│       │ │-------│       ┌─│PAGE_A │
  1596.     │ │       │       │ │       │       │ │       │
  1597.     └>│-------│       └>│-------│       │ │-------│
  1598.       │PAGE_B │         │PAGE_B │       └>│PAGE_B │
  1599.       │       │         │       │         │       │
  1600.       │-------│         │-------│         │-------│
  1601.       └───────┘         └───────┘         │       │
  1602.                       └───────┘
  1603.  
  1604. The Algorithm for filling of the pages is HEADER, PAGE_A and PAGE_B, and is
  1605. defined in the JMP records.
  1606.  
  1607. PAGE_C is used by the special (decryption or cure) subroutines and used as
  1608. a read/write buffer, and area for decrypted virus code.
  1609.  
  1610.  ┌──────┐    ┌──────────────────┐    ┌──────┐
  1611.  │PAGE_A│───>│decryption routine│───>│PAGE_C│
  1612.  └──────┘    └──────────────────┘    └──────┘
  1613.  
  1614.  file
  1615.  ┌───────┐<────┐
  1616.  │       │     │ writing
  1617.  │-------│  ┌──────┐
  1618.  │       │  │PAGE_C│
  1619.  │       │  └──────┘
  1620.    . . .       ^
  1621.  │-------│     │ reading
  1622.  │       │─────┘
  1623.  └───────┘
  1624.  
  1625. The page FILE is a virtual one. It is not a block of memory. Elements of
  1626. the page FILE have signed offsets. The null address of page FILE equals the
  1627. file entry point address. This page is used during file disinfection to
  1628. reach the file code which is out of other pages.
  1629.  
  1630.  file
  1631.  ┌───────┐
  1632.  │HEADER │
  1633.  │-------│
  1634.  │       │
  1635.  │       │FILE-0400h
  1636.  │       │
  1637.  │-------│FILE+0000
  1638.  │PAGE_A │
  1639.  │-------│FILE+0400h
  1640.  │       │
  1641.  │       │FILE+0800h
  1642.    . . .
  1643.  │-------│
  1644.  │PAGE_B │
  1645.  │-------│
  1646.  │       │
  1647.  └───────┘
  1648.  
  1649.  
  1650.  Check Sums
  1651.  ──────────
  1652. To detect a virus the virus scanner uses check sums (control sums) instead
  1653. of the conventional signatures. All check sums are double word in length
  1654. (32 bits). The algorithm of check sum calculation is one of the standard
  1655. CRC algorithms.
  1656.  
  1657. The virus scanner calculates check sums for each scanned object, and
  1658. compares it with list of check sums that are stored in the database
  1659. records.
  1660.  
  1661. There are two check sums that are used in the SECTOR, and FILE records:
  1662. rough (on code of small length), and final (on code of long length). The
  1663. MEMORY record contains only the checksum.
  1664.  
  1665. In FILE and SECTOR records it is recommended to use length, and offset of
  1666. the code for the first checksum in these limits:
  1667.  
  1668.  - the length of code is less or equal to 10h;
  1669.  - the offset of the start of code is equal to zero.
  1670.  
  1671. In this case the internal cache is used. If it is impossible to select the
  1672. code in these limits, you should use another one.
  1673.  
  1674. If the length of first check sum is over or equal to 8 and the calculated
  1675. (on scanning) sum is equal to that check sum, the virus scanner displays
  1676. the warning message:
  1677.  
  1678.  virus NAME warning (tail length)
  1679.  
  1680. where NAME is string from Name field of corresponding database record.
  1681.  
  1682.  
  1683.  Record Processing
  1684.  ─────────────────
  1685. When virus scanning files or sectors the virus scanner opens the file
  1686. (locates the sector), calculates entry point, fills the pages HEADER,
  1687. PAGE_A, PAGE_B, and then calculates the first checksum. If that checksum is
  1688. equal to first checksum of record a second checksum is calculated. If there
  1689. is special decode routine, it is executed before calculation of second
  1690. checksum.
  1691.  
  1692. If the second checksum is equal to checksum stored in the record, the virus
  1693. scanner displays a corresponding message. If it is executed for the cure
  1694. process, it processed the disinfection fields. If there is a special
  1695. disinfection routine, it is executed before processing of these fields.
  1696.  
  1697. When virus scanning the system memory the virus scanner calculates the
  1698. checksums of the areas of the system memory at addresses from a limited
  1699. list (Memory Record). If that checksum is equal to the checksum of the
  1700. record, it disinfects that area of the system memory according to other
  1701. record fields.
  1702.  
  1703. When calculating the entry point the virus scanner calculates checksums in
  1704. the page HEADER, and compares them to the checksums from JMP records. If
  1705. sums are equal to the record's ones, it processes corresponding method of
  1706. entry point address calculation.
  1707.  
  1708.  
  1709.  Creating a New Record
  1710.  ────────────────────-
  1711. To attach the information about a new virus into the database it is
  1712. necessary to:
  1713.  
  1714.  - open a new record (INSERT key),
  1715.  - select the type of the record (FILE, SECTOR, JMP, MEMORY, ...)
  1716.  - type the name of virus,
  1717.  - select the type of objects to check (for FILE and SECTOR records),
  1718.  - fill the checksum areas (select pages, offsets and lengths),
  1719.  - fill the disinfection fields (or set method of disinfection to FAIL),
  1720.  - link the special routines (if it is necessary),
  1721.  - calculate the checksum by using the SUM command that automatically
  1722.    calculates sums by pointing to an infected file, or type the virus mask
  1723.    manually.
  1724.  
  1725. If you describe a virus that does not have the code which is useful for
  1726. calculating the sums (polymorphic virus), it is necessary to set the length
  1727. of the first control sum to zero, and link the object code of the decryptor
  1728. by the LINK command of the form. In this case you should calculate the
  1729. second control sum in PAGE_C.
  1730.  
  1731. See samples of database records in SAMPLES.ZIP file.
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  3.1. FILE Record
  1737.  ────────────────────────────────────────────────────────────────────
  1738.  
  1739.  Fields
  1740.  ──────
  1741.  Type           type of the record (COM or/and EXE or/and SYS or/and WIN)
  1742.  Name           virus name
  1743.  Page_1         page for the control sum 1
  1744.  Offset_1       offset for the control sum 1
  1745.  Len_1          length for the control sum 1
  1746.  Sum_1          control sum 1
  1747.  
  1748.  Page_2         page for the control sum 2
  1749.  Offset_2       offset for the control sum 2
  1750.  Len_2          length for the control sum 2
  1751.  Sum_2          control sum 2
  1752.  
  1753.  Cure_Method    remove method
  1754.  Cure_Page      page for the cure method
  1755.  Cure_Data_1    cure data
  1756.  Cure_Data_2    cure data
  1757.  Cure_Data_3    cure data
  1758.  Cure_Data_4    cure data
  1759.  Cure_Cut       number of the bytes to cut file
  1760.  
  1761.  Commands
  1762.  ────────
  1763.  Link       attach the object code to the record
  1764.  Sum        calculate the control sums
  1765.  
  1766.  
  1767.  The Record Processing Algorithm
  1768.  ───────────────────────────────
  1769. The file is dispatched by the JMP records (the calculation of the EP,
  1770. EP_Next values, filling the HEADER, PAGE_A, PAGE_B pages) before calling
  1771. the virus check loop.
  1772.  
  1773. The check loop processes all the file records. For each file record the
  1774. first control sum is calculated (in page pointed by Page_1 field from
  1775. Offset_1 on Len_1 bytes). This sum is compared with the value from the
  1776. field Sum_1. If these values are equal then the second control sum is
  1777. calculated (in page pointed by field Page_2 from Offset_2 on Len_2 bytes).
  1778. The decode procedure is called before the calculation of second control sum
  1779. if that procedure presents in linked module.
  1780.  
  1781. If the second control sum is equal to the Sum_2 field then the virus
  1782. scanner removes the viruses according to the method pointed in the field
  1783. Cure_Method. The Fields Cure_Page, Cure_Data_1, Cure_Data_2, Cure_Data_3,
  1784. Cure_Data_4, Cure_Cut are used for removing the virus. The field Cure_Page
  1785. is used to point to the page from which the data for cure is getting with
  1786. the offsets Cure_Data_x. If Cure_Page=FILE then the data for cure is
  1787. getting from the tested file with the offsets EP+Cure_Data_x. The
  1788. Cure_Data_x fields is signed.
  1789.  
  1790. The standard method is applied after the special cure procedure, if this
  1791. procedure is presented in linked module and returned R_PRECURE.
  1792.  
  1793.  
  1794.  Cure Methods
  1795.  ────────────
  1796.  
  1797.  MOVE and LEHIGH
  1798.  ───────────────
  1799. These methods repair the bytes of file beginning. They are used against the
  1800. viruses that append themselves to the file end, and alter the file
  1801. beginning.
  1802.  
  1803.  Repairing:
  1804.  
  1805. Cure_Data_2 bytes are copied to file beginning with offset Cure_Data_3 from
  1806. the page pointed to in the Cure_Page with offset Cure_Data_1. If the file
  1807. name is COMMAND.COM, then fill file with 0 from the Entry_Point minus
  1808. Cure_Cut offset to the end of the file, otherwise it sets the file length
  1809. to the Entry_Point minus Cure_Cut offset. The Cure_Data_4 field is not
  1810. used.
  1811.  
  1812.  
  1813.  JERUSALEM
  1814.  ─────────
  1815. It is used against the viruses which write themselves into the file
  1816. beginning, and shift the file body.
  1817.  
  1818.  Repairing:
  1819.  
  1820. The file is moved to the beginning on Cure_Data_1 bytes. The file length is
  1821. decreased by Cure_Data_1 + Cure_Cut bytes. The Cure_Page, Cure_Data_2,
  1822. Cure_Data_3, Cure_Data_4 fields are not used.
  1823.  
  1824.  
  1825.  START
  1826.  ─────
  1827. It is used against viruses which write themselves into the file beginning,
  1828. and move the original beginning to the end of the file.
  1829.  
  1830.  Repairing:
  1831.  
  1832. The file length is decreased by the Cure_Cut bytes, then the part of the
  1833. code is moved from the file end to the file beginning. If the file length
  1834. is less than Cure_Data_1*2, then it moves the File_Length minus Cure_Data_1
  1835. bytes (File_Length after decreasing by Cure_Cut bytes), otherwise is moves
  1836. Cure_Data_1 bytes, and the file length is decreased by Cure_Data_1 bytes.
  1837. The Cure_Page, Cure_Data_2, Cure_Data_3, Cure_Data_4 fields are not using.
  1838.  
  1839.  
  1840.  EXE_CISS, EXE_CISS_10, EXE_CIS, EXE_CIS_10, EXE_CI, EXE_CI_10
  1841.  ─────────────────────────────────────────────────────────────
  1842. EXE-file header repair methods.
  1843.  
  1844.  EXE_CISS - repair the values of all header register fields (CS,IP,SS,SP)
  1845.  EXE_CIS  - repair the values of CS, IP and SS header register fields
  1846.  EXE_CI   - repair the values of CS and IP header register fields
  1847.  
  1848. EXE_CISS_10, EXE_CIS_10, EXE_CI_10 methods are the same as listed above
  1849. with one exception: the CS and SS header register fields are decreased by
  1850. 10h before restoring.
  1851.  
  1852. The values of the header register fields for all the Pages except FILE are:
  1853.  
  1854.  CS: word ptr Cure_Page[ Cure_Data_1 ]
  1855.  IP: word ptr Cure_Page[ Cure_Data_2 ]
  1856.  SS: word ptr Cure_Page[ Cure_Data_3 ]
  1857.  SP: word ptr Cure_Page[ Cure_Data_4 ]
  1858.  
  1859. Cure_Data_x are unsigned.
  1860.  
  1861. The values for the header register fields if Cure_Page=FILE are:
  1862.  
  1863.  CS: word ptr File[ EP+Cure_Data_1 ]
  1864.  IP: word ptr File[ EP+Cure_Data_2 ]
  1865.  SS: word ptr File[ EP+Cure_Data_3 ]
  1866.  SP: word ptr File[ EP+Cure_Data_4 ]
  1867.  
  1868. Cure_Data_x are signed.
  1869.  
  1870. The file length is decreased by EP minus Cure_Cut bytes. The EXE-module
  1871. size fields of EXE-header are corrected too.
  1872.  
  1873.  
  1874.  SYS_SI and SYS_I
  1875.  ────────────────
  1876. SYS-file header repair methods.
  1877.  
  1878.  SYS_SI  - repair the value of the Strategy and Interrupt header fields
  1879.  SYS_I   - repair the value of the Interrupt header field
  1880.  
  1881. The values for the header fields are:
  1882.  
  1883.  Strategy   - word ptr Cure_Page[ Cure_Data_1 ]
  1884.  Interrupt  - word ptr Cure_Page[ Cure_Data_2 ]
  1885.  
  1886.  
  1887.  DELETE
  1888.  ──────
  1889. It deletes the infected file.
  1890.  
  1891.  
  1892.  FAIL
  1893.  ────
  1894. This method displays the message "virus NAME cure failed". It is used as a
  1895. temporary name for viruses which are "disinfectable", but the current
  1896. version of the virus scanner does not disinfect them correctly.
  1897.  
  1898.  
  1899.  SPECIAL
  1900.  ───────
  1901. For a complex virus that uses encryption or the courage algorithm the
  1902. standard methods are not allowed. In this situation you should write a
  1903. special procedure to cure the virus, then compile it and, attach the object
  1904. code to the record by Link command.
  1905.  
  1906.  
  1907.  Example
  1908.  ───────
  1909. The COM-file is infecting by the virus "Tiny".
  1910.  
  1911. On infection this virus appends to file 4 bytes at the beginning of the
  1912. file, then it appends 140 bytes of the virus body, then it modifies the
  1913. first four bytes of the file (jmp to the virus body):
  1914.  
  1915.  4D             DEC  PB
  1916.  E9 xx xx       JMP  NEAR Loc_Virus
  1917.  
  1918. It is necessary to register a new JMP record because the code of the virus
  1919. jump is not standard:
  1920.  
  1921. JMP record:
  1922.  
  1923.  Name           Tiny
  1924.  Len_1          02
  1925.  Sum_1          xxxxxxxx  <<< sum is calculated with Sum command
  1926.  Offset_2       00
  1927.  Len_2          00
  1928.  Sum_2          00
  1929.  Jmp_Method     OFFSET
  1930.  Jmp_Data       02
  1931.  
  1932. Then you should register a new FILE record:
  1933.  
  1934.  Type           COM
  1935.  Name           Tiny
  1936.  Page_1         PAGE_A
  1937.  Offset_1       00
  1938.  Len_1          08
  1939.  Sum_1          xxxxxxxx  <<< sum is calculated with Sum command
  1940.  Page_2         PAGE_A
  1941.  Offset_2       00
  1942.  Len_2          40
  1943.  Sum_2          xxxxxxxx  <<< sum is calculated with Sum command
  1944.  Cure_Method    MOVE
  1945.  Cure_Page      FILE
  1946.  Cure_Data_1   -04
  1947.  Cure_Data_2    04
  1948.  Cure_Data_3    00
  1949.  Cure_Data_4    00
  1950.  Cure_Cut      -04
  1951.  
  1952.  
  1953.  
  1954.  3.2. JMP Record
  1955.  ────────────────────────────────────────────────────────────────────
  1956.  
  1957.  Fields
  1958.  ──────
  1959.  Name           name of the record (information field)
  1960.  Len_1          length for the control sum 1
  1961.  Sum_1          control sum 1
  1962.  Offset_2       offset for the control sum 2
  1963.  Len_2          length for the control sum 2
  1964.  Sum_2          control sum 2
  1965.  
  1966.  Jmp_Method     method of jump
  1967.  Jmp_Data       data for jump method
  1968.  
  1969.  
  1970.  Commands
  1971.  ────────
  1972.  Link   attach the object code to the record
  1973.  Sum    calculate the control sums
  1974.  
  1975.  
  1976.  The Record Processing Algorithm
  1977.  ───────────────────────────────
  1978. The file is dispatched by the JMP records (the calculation of the EP,
  1979. EP_Next values, filling the HEADER, PAGE_A, PAGE_B pages) before calling
  1980. the virus check loop.
  1981.  
  1982. After the file opening the 400h bytes from the file beginning are read into
  1983. the pages Header and Page_A. The contents of the other pages are set to
  1984. zero.  Next the virus scanner will run the JMP loop for detecting the file
  1985. entry point (EP). The first control sum on Len_1 bytes of the page Header
  1986. is calculated for each JMP record. This value is compared to the value of
  1987. the field Sum_1. If these values are equal then the second control sum in
  1988. the page Header from Offset_2 on Len_2 bytes is calculated. If the second
  1989. control sum is equal to the value of the Sum_2 field then the value of EP
  1990. is calculated according to the method which is pointed by the field
  1991. Jmp_Method with data from the field Jmp_Data. The 400h bytes of the code
  1992. from the file at the offset EP are read into the page Page_A.
  1993.  
  1994. This procedure repeats one time for filling EP_Next and Page_B by using the
  1995. page Page_A instead of the page Header.
  1996.  
  1997. This procedure is called on calculation of jumps in boot sectors also.
  1998.  
  1999.  
  2000.  EP Calculation Methods
  2001.  ──────────────────────
  2002.  
  2003.  OFFSET
  2004.  ──────
  2005. It used to dispatch the commands like:
  2006.  
  2007.  xxxx:0100  E9 xx xx     JMP  NEAR Loc_Virus
  2008.  .... ....
  2009.  
  2010.  xxxx:0100  E8 xx xx     CALL NEAR Loc_Virus
  2011.  .... ....
  2012.  
  2013. or the instruction combinations like:
  2014.  
  2015.  xxxx:0100  90           NOP
  2016.  xxxx:0101  E9 xx xx     JMP  NEAR Loc_Virus
  2017.  .... ....
  2018.  
  2019. The EP value is calculated as address of command, where control is passed
  2020. to by instruction JMP NEAR or CALL NEAR.
  2021.  
  2022.  EP = word ptr Header[Jmp_Data] + Jmp_Data + 2.
  2023.  
  2024.  
  2025.  ADDRESS
  2026.  ───────
  2027. It used to dispatch the commands of the COM-files like:
  2028.  
  2029.  xxxx:0100  68 xx xx     PUSH OFFSET Vir_Loc
  2030.  xxxx:0103  C3           RET
  2031.  .... ....
  2032.  
  2033.  xxxx:0100  B8 xx xx     MOV  AX, OFFSET Vir_Loc
  2034.  xxxx:0103  FF D0        CALL AX
  2035.  .... ....
  2036.  
  2037. The EP value is calculated as the address of command, where control passed
  2038. to by the RET/JMP/CALL instruction.
  2039.  
  2040.  EP = word ptr Header[Jmp_Data] - 0100h.
  2041.  
  2042.  
  2043.  DATA
  2044.  ────
  2045. It used to dispatch commands of the COM-files like:
  2046.  
  2047.  xxxx:0100  FF 26 04 01  JMP  WORD PTR [0104]
  2048.  xxxx:0104  xx xx        DW   Vir_Offset
  2049.  .... ....
  2050.  
  2051.  EP = word ptr File [Jmp_Data] - 0x100.
  2052.  
  2053.  
  2054.  FAIL
  2055.  ────
  2056. This method displays the message "virus NAME cure failed" and is used as a
  2057. temporary name for viruses under analysis.
  2058.  
  2059.  
  2060.  SPECIAL
  2061.  ───────
  2062. For complex commands the standard methods are not allowed. In that
  2063. situation you should write a special procedure to calculate EP, then
  2064. compile it, and attach the object code to the record by the Link command.
  2065. The dispatch of the EXE-file header, and the short jumps instruction use
  2066. SPECIAL methods.
  2067.  
  2068. Note: Most jump codes are calculated by the current set of JMP records
  2069. which are included in main antiviral database. Please check the virus scanner
  2070. for jump calculation before adding a new one.
  2071.  
  2072.  
  2073.  Example
  2074.  ───────
  2075.  
  2076. The code of the infected file beginning:
  2077.  
  2078.  0000 90          NOP
  2079.  0001 90          NOP
  2080.  0002 E9 xx xx    JMP   Virus
  2081.  
  2082. The files filling:
  2083.  
  2084.  Name            nop_nop_jmp
  2085.  Len_1           0003
  2086.  Sum_1           xxxxxxxx  <<< sum is calculated with Sum command
  2087.  Offset_2        0000
  2088.  Len_2           0003
  2089.  Sum_2           xxxxxxxx  <<< sum is calculated with Sum command
  2090.  Jmp_Method      OFFSET
  2091.  Jmp_Data        0003
  2092.  
  2093.  
  2094.  
  2095.  3.3. MEMORY Record
  2096.  ────────────────────────────────────────────────────────────────────
  2097.  
  2098.  Fields
  2099.  ──────
  2100.  Name           virus name
  2101.  Method         search method
  2102.  Segment        value of the segment Segm (method ADDRESS)
  2103.  Offset_1       offset value for search
  2104.  Control_Byte   control byte
  2105.  Len_1          length for the control sum 1
  2106.  Sum_1          control sum 1
  2107.  
  2108.  Offset_2       offset of the replace code
  2109.  Len_2          length of the replace data ( <5 )
  2110.  Replace_Bytes  bytes for replacing
  2111.  
  2112.  
  2113.  Commands
  2114.  ────────
  2115.  Link   attach the object code to the record
  2116.  Sum    calculate the control sums
  2117.  
  2118.  
  2119.  Record Processing Algorithm
  2120.  ───────────────────────────
  2121. The virus scanner scans the set of the addresses Segm:Offs according to the
  2122. Method field. For each of the addresses it compares the byte of the system
  2123. memory at the address Segm:Offs + Offset_1 with the value of the
  2124. Contol_Byte field. If these value are equal then it calculates the control
  2125. sum at the address Segm:Offs + Offset_1 on the Len_1 bytes. If the control
  2126. sum is equal to the Sum field the scanner displays a corresponding message,
  2127. and replaces the Len_2 bytes from Segm:Offs+Offset_2 by the sequence of the
  2128. bytes from the Replace_Bytes field.
  2129.  
  2130.  
  2131.  Search Methods
  2132.  ──────────────
  2133.  
  2134.  ADDRESS
  2135.  ───────
  2136. To search at one fixed address. Segm, and Offs are pointed by the field.
  2137. The value of Offs is equal to the zero.
  2138.  
  2139.  
  2140.  CUT
  2141.  ───
  2142. To search in memory that is 'cut' from DOS (as a lot of boot viruses do).
  2143. The Segm value is changed from the end of the Z block of DOS memory blocks
  2144. until A000h by increasing by the one. The value of Offs is equal to the
  2145. zero.
  2146.  
  2147.  
  2148.  MCB
  2149.  ───
  2150. To search in the DOS memory blocks. The Segm value is changed in the
  2151. segment addresses of all the MCB blocks. The value of Offs is equal to the
  2152. zero. Attention! The Segm value is equals to the address of memory block
  2153. body not to the address of the memory CONTROL block (MCB).
  2154.  
  2155.  
  2156.  TRACE
  2157.  ─────
  2158. To trace the interrupts 21h, and 13h. The values of Segm:Offs are changed
  2159. in the list of the address with all the over-segment jumps.
  2160.  
  2161.  
  2162.  SCAN
  2163.  ────
  2164. The virus scanning of the memory. The Segm value is changed from 0000h
  2165. until the segment address of scanner by increasing by one. The value of
  2166. Offs is equal to the zero.
  2167.  
  2168.  
  2169.  FULL_SCAN
  2170.  ─────────
  2171. The virus scanning of the entire memory. The Segm value is changed from
  2172. 0000h until A000h by increasing by one. The value of Offs is equal to the
  2173. zero.
  2174.  
  2175.  
  2176.  SPECIAL
  2177.  ───────
  2178. The special search, and removing procedure is called if this method is
  2179. pointed. You should write a special procedure, compile it, and attach the
  2180. object code to the record by the Link command if you point this method.
  2181.  
  2182.  
  2183.  Example
  2184.  ───────
  2185.  
  2186. The code in infected system memory:
  2187.  
  2188.  1234:0123 80 FC 3D    CMP   AH,3Dh
  2189.  1234:0126 74 xx       JE    Infect_File
  2190.  1234:0128 E9 xx xx    JMP   Continue
  2191.  1234:012B . . . .     . . . . .
  2192.  
  2193.  The first deactivation method:  TRACE
  2194.  ─────────────────────────────────────
  2195.  
  2196. The fields filling:
  2197.  
  2198.  Method          TRACE
  2199.  Segment         0000
  2200.  Offset_1        0000
  2201.  Control_Byte    80
  2202.  Len_1           8
  2203.  Sum             xxxxxxxx  <<< sum is calculated by the Sum command
  2204.  Offset_2        3
  2205.  Len_2           2
  2206.  Replace_Bytes   90 90
  2207.  
  2208. The code in the memory after curing:
  2209.  
  2210.  1234:0123 80 FC 3D     CMP   AH,3Dh
  2211.  1234:0126 90           NOP
  2212.  1234:0127 90           NOP
  2213.  1234:0128 E9 xx xx     JMP   Continue
  2214.  1234:012B . . . .      . . . . .
  2215.  
  2216.  
  2217.  The second deactivation method:  MCB
  2218.  ────────────────────────────────────
  2219.  
  2220. The fields filling:
  2221.  
  2222.  Method          MCB
  2223.  Segment         0000
  2224.  Offset_1        0123
  2225.  Control_Byte    80
  2226.  Len_1           8
  2227.  Sum             xxxxxxxx  <<< sum is calculated by the Sum command
  2228.  Offset_2        0126
  2229.  Len_2           2
  2230.  Replace_Bytes   90 90
  2231.  
  2232.  
  2233.  
  2234.  3.4. SECTOR Record
  2235.  ────────────────────────────────────────────────────────────────────
  2236.  
  2237.  Fields
  2238.  ──────
  2239.  Type           type of the record (BOOT and/or MBR)
  2240.  Name           virus name
  2241.  Offset_1       offset for the control sum 1
  2242.  Len_1          length for the control sum 1
  2243.  Sum_1          control sum 1
  2244.  
  2245.  Page_2         page for the control sum 2
  2246.  Offset_2       offset for the control sum 2
  2247.  Len_2          length for the control sum 2
  2248.  Sum_2          control sum 2
  2249.  
  2250.  Cure_Method    remove method
  2251.  Cure_Page      page for the cure method
  2252.  
  2253.  Cure_Addr_A    cure data
  2254.  Cure_Addr_B    cure data
  2255.  Cure_Offset    cure data
  2256.  
  2257.  Commands
  2258.  ────────
  2259.  Link   attach the object code to the record
  2260.  Sum    calculate the control sums
  2261.  
  2262.  
  2263.  Record Processing Algorithm
  2264.  ───────────────────────────
  2265. When virus scanning the system sector is read into the page Header (200h
  2266. bytes). Next the virus scanner will run the JMP loop for detecting the
  2267. entry point (EP) as well as the calculation of file entry point. The bytes
  2268. from entry point until the end of sector are moved to Page_A. The contents
  2269. of other pages are set to zero before running the detection loop. The first
  2270. control sum is calculated in the page Header from Offset_1 on Len_1 bytes.
  2271. If the first control sum is equal to the Sum_1 value then the second
  2272. control sum is calculated in page which is pointed to by the Page_2 field
  2273. from Offset_2 on Len_2 bytes. The decode procedure is called before
  2274. calculating the second control sum, if this procedure is presented linked
  2275. module. If the second control sum is equal to the Sum_2 field then the
  2276. virus scanner removes the virus according to method which is pointed to in
  2277. the field Cure_Method. The Cure_Addr_A, Cure_Addr_B, Cure_Offset fields are
  2278. used for removing the virus.
  2279.  
  2280. The standard method is applied after the special cure procedure, if this
  2281. procedure is presented linked module and returned R_PRECURE.
  2282.  
  2283. The address of the sector (Boot or MBR) can be pointed to by two methods: the
  2284. physical address (head,track§or - two arguments) or the logical
  2285. address (the number of the sector of the logical disk - one argument).
  2286. These methods use different interrupts.
  2287.  
  2288.  Addressing      Sector address                 Interrupt
  2289.  ──────────      ──────────────                 ─────────
  2290.  logical        logical sector - CX             INT 25h/26h
  2291.  physical       track and sector - CX           INT 13h
  2292.                 head  - DH
  2293.  
  2294.  
  2295.  Cure Methods
  2296.  ────────────
  2297.  
  2298.  ADDRESS
  2299.  ───────
  2300. If absolute addressing is used. The original MBR or Boot sector are moved
  2301. from the disk sector at the absolute address Cure_Addr_A/Cure_Addr_B
  2302. (track§or/head or CX/DH in the INT 13h format). The fields Cure_Page,
  2303. and Cure_Offset are not used.
  2304.  
  2305.  
  2306.  ABSOLUTE
  2307.  ────────
  2308. If absolute addressing is used. The original MBR or Boot sector are moved
  2309. from the disk sector at the absolute address CX/DH in the INT 13h format,
  2310. where CX and DH values are got from the page Cure_Page:
  2311.  
  2312.  CX = word ptr Cure_Page [Cure_Addr_A] + Cure_Offset
  2313.  DH = byte ptr Cure_Page [Cure_Addr_B]
  2314.  
  2315.  
  2316.  LOGICAL
  2317.  ───────
  2318. It is the same as the ABSOLUTE method except for the addressing. The
  2319. logical addressing is used:
  2320.  
  2321.  CX = word ptr Cure_Page [Cure_Addr_A] + Cure_Offset
  2322.  
  2323. The Cure_Addr_B field is not used.
  2324.  
  2325.  
  2326.  DELETE
  2327.  ──────
  2328. The standard MBR or Boot sector of MS-DOS 6.0 is placed into the disk
  2329. sector.
  2330.  
  2331. Note: this method can be dangerous if the disk has been formatted with non
  2332. standard utilities.
  2333.  
  2334.  
  2335.  FAIL
  2336.  ────
  2337. This method displays the message "virus NAME cure failed". It is used as a
  2338. temporary name for viruses which are "disinfectable", but the current
  2339. version of scanner does not disinfect them correctly.
  2340.  
  2341.  
  2342.  SPECIAL
  2343.  ───────
  2344. For complex viruses that use an encryption or a stealth algorithm the
  2345. standard methods are not allowed. In this situation you should write a
  2346. special procedure to cure the virus, then compile it, and attach the object
  2347. code into the record by the Link command.
  2348.  
  2349.  
  2350.  Example:
  2351.  ────────
  2352.  
  2353. The Boot sector has been infected by the "Stoned" virus. That virus saves
  2354. the original Boot sector in the absolute sector at the address 3/1
  2355. (sector/head).
  2356.  
  2357. Fields filling:
  2358.  
  2359.  Type          BOOT
  2360.  Name          Stoned
  2361.  Offset_1      00
  2362.  Len_1         08
  2363.  Sum_1         xxxxxxxx   <<< sum is calculated with Sum command
  2364.  Program_Flag  NO
  2365.  
  2366.  Page_2        HEADER
  2367.  Offset_2      15
  2368.  Len_2         80
  2369.  Sum_2         xxxxxxxx   <<< sum is calculated with Sum command
  2370.  
  2371.  Cure_Method   ADDRESS
  2372.  Cure_Page     FILE
  2373.  
  2374.  Cure_Addr_A   03
  2375.  Cure_Addr_B   01
  2376.  Cure_Offset   00
  2377.  
  2378.  
  2379.  
  2380.  3.5. Link of Special Procedures
  2381.  ────────────────────────────────────────────────────────────────────
  2382.  
  2383. These special procedures are used to expand the capability of the antiviral
  2384. database. They attach to the records in the antiviral database, and are
  2385. used for the detection, and removal of difficult viruses that use
  2386. nonstandard infection methods or self-encryption algorithms. The special
  2387. procedures may be written on C, assembler, and other languages that support
  2388. the C standard of subroutines calls. Borland C compilers are recommended.
  2389.  
  2390. You can attach these special procedures to the records of the antiviral
  2391. database after compiling them to the object modules. The attached code
  2392. would be read from the database, and linked with the main anti-virus
  2393. executable during the loading of the database. When virus scanning the main
  2394. program would use these procedures, as well as, its own internal
  2395. subroutines.  We recommend the SMALL model for compiling the source modules
  2396. if there is no static data, and the HUGE model if the static data is
  2397. present. The using of TINY model is impossible.
  2398.  
  2399. For example, the compiling FILENAME.C to FILENAME.OBJ can be performed
  2400. with Borland C by the command:
  2401.  
  2402.  bcc -mh -c -K filename.c
  2403.  
  2404.  
  2405.  Standard Names of Special Procedures
  2406.  ────────────────────────────────────
  2407. One or two procedures with standard names (like 'main' in C) must be
  2408. present in the linked module. There are three standard names:
  2409.  
  2410.  decode() {procedure body} // decryption procedure
  2411.  cure()   {procedure body} // removing procedure
  2412.  jmp()    {procedure body} // procedure for entry point calculation
  2413.  
  2414. The names "decode" and "cure" can be used together or separately in FILE,
  2415. and SECTOR records. In TSR records it can be used in the "cure" procedure
  2416. only. In JMP records it can be used in the "jmp" procedure only.
  2417.  
  2418.  
  2419.  Using of External Procedures, and Data
  2420.  ──────────────────────────────────────
  2421. The special procedures use external procedures, and data. Before access to
  2422. these names it is necessary to describe those names as external. The names
  2423. which are defined in the main program can be accessed from any special
  2424. procedure. These names are defined in SAMPLES\DLINK.H file. See this file
  2425. for more info.
  2426.  
  2427. The access to the external names that were defined in other linked modules
  2428. are available if the record with the definition is placed BEFORE the record
  2429. with the call to the external name.
  2430.  
  2431. Correct example:
  2432.  
  2433.  Record Cascade.1701: define Decode_Cascade(...) {...}
  2434.                       call   Decode_Cascade(...)
  2435.  
  2436.  Record Cascade.1704: call   Decode_Cascade(...)
  2437.  
  2438.  
  2439. Incorrect example:
  2440.  
  2441.  Record Cascade.1701: call   Decode_Cascade(...)
  2442.  
  2443.  Record Cascade.1704: define Decode_Cascade(...) {...}
  2444.                       call   Decode_Cascade(...)
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  ────────────────────────────────────────────────────────────────────
  2450.  4.  Antiviral Resident Monitor     (Pro version)
  2451.  ────────────────────────────────────────────────────────────────────
  2452.  
  2453.  
  2454.  
  2455.  
  2456. The Antiviral Monitor (AVPTSR) is the memory resident "lie detector". It
  2457. allows you to detect suspicious actions on your computer. Using the AVPTSR
  2458. it is possible to stop the spreading of a computer virus in the earliest
  2459. stage of infection. Apart from this, the AVPTSR may be helpful when you
  2460. work with programs that you think might be infected by a virus or a trojan
  2461. horse. The AVPTSR lets you monitor the computer's memory allocation (window
  2462. "Memory Map" in the main menu of the AVPTSR). This will allow you to detect
  2463. memory-resident viruses upon execution of a infected program. In the "Menu"
  2464. portion of the AVPTSR you are able to select the options you want to
  2465. monitor for, or situations the AVPTSR should monitor for.
  2466.  
  2467.  
  2468. The main AVPTSR functions are:
  2469.  
  2470.  - the detection of infected files and disk sectors;
  2471.  - the control for changing and renaming of executable
  2472.    files (COM and EXE files);
  2473.  - the control for writing to the disks at absolute address, and
  2474.    the disk formatting;
  2475.  - the control for appearance of resident programs;
  2476.  - the control for several dangerous DOS functions.
  2477.  
  2478. Also, the monitor controls RAM allocation, and the status of some DOS
  2479. system areas.
  2480.  
  2481. When "suspicious" behavior of the computer is intercepted the AVPTSR will
  2482. display a warning message (a window containing detailed information appears
  2483. on the screen), and waits for a command that allows or prohibits the intended
  2484. action. The complete list of the displayed messages is giving below.
  2485.  
  2486. The main menu for the AVPTSR is opened by pressing both keys Alt and "-"
  2487. at the same time, to quit press the ESC key. When displaying the AVPTSR
  2488. menu two windows appear on the screen: the mode setting window and the
  2489. memory map window.
  2490.  
  2491.  ╔═════════════════╦══════════════════╤═════════════════╤═══════════╗
  2492.  ║Access to files √║  Total: 640 K    │ ROM BIOS: 640 K │DOS: 640 K ║
  2493.  ║Memory check    √╠════╤════╤═══════╤╧═══════════╤═════╧═══════════╣
  2494.  ║Format sector   √║MCB │PSP │ Size  │   Owner    │ Hooked vectors  ║
  2495.  ║Write to sector √╟────┼────┼───────┼────────────┼─────────────────╢
  2496.  ║Dangerous calls  ║0A49│0A49│  2,368│COMMAND.COM │2E               ║
  2497.  ║Scan on EXEC    √║0ADE│0000│     64│   free     │                 ║
  2498.  ║Scan on OPEN     ║0AE3│0A49│    256│COMMAND.COM │                 ║
  2499.  ║Check all files  ║0AF4│0B00│    176│RTSR.COM    │                 ║
  2500.  ║Registers        ║0B00│0B00│  1,536│RTSR.COM    │                 ║
  2501.  ║Remove AVPTSR    ║0B61│0B6D│    176│PRN2FILE.EXE│                 ║
  2502.  ╚═════════════════╣0B6D│0B6D│ 75,104│PRN2FILE.EXE│08 17 28 ED F0 F6║
  2503.  ░░░░░░░░░░░░░░░░░░║1DC4│1DD0│    176│AVPTSR.EXE  │                 ║
  2504.  ░░░░░░░░░░░░░░░░░░║1DD0│1DD0│ 16,888│AVPTSR.EXE  │09 13 1B 20 21 22║
  2505.  ░░░░░░░░░░░░░░░░░░║    │    │       │            │2A 2F 40 EE      ║
  2506.  ░░░░░░░░░░░░░░░░░░║2113│0000│282,304│   free     │FE               ║
  2507.  ░░░░░░░░░░░░░░░░░░╚════╧════╧═══════╧════════════╧═════════════════╝
  2508.  
  2509.  
  2510. The mode setting window (Left side of Display box) indicates the
  2511. selected detection modes which corresponding to suspicious operations.
  2512. This section is used for their selection. You can change the
  2513. options by using the <RETURN> or <ENTER> keys.
  2514.  
  2515. It's possible to change these options by reinstalling the AVPTSR. The
  2516. AVPTSR finds in the system memory its copy loaded earlier and passes to it
  2517. the arguments specified in the command line.
  2518.  
  2519. The monitor modes are:
  2520.  
  2521.  Access to files : stop the modification or deleting of the files
  2522.  Memory check    : check the system memory
  2523.  Format sector   : stop formatting
  2524.  Write to sector : stop writing to disk sectors
  2525.  Dangerous calls : stop dangerous DOS calls and interrupt tracing
  2526.  Scan on EXEC    : scan the files for the viruses on execution
  2527.  Scan on OPEN    : scan the files for the viruses on opening
  2528.  Check all files : stop the modifying and scan all files, or
  2529.                    COM/EXE/SYS/OVL/BIN only
  2530.  Registers       : show the registers
  2531.  Remove AVPTSR   : remove AVPTSR from system memory
  2532.  
  2533.  
  2534.  
  2535.  4.1.  Command Line Options
  2536.  ────────────────────────────────────────────────────────────────────
  2537.  
  2538. The format for loading the AVPTSR from DOS prompt or BAT-file is:
  2539.  
  2540.  C:>AVPTSR [option...]
  2541.  
  2542. the options are:
  2543.  
  2544.  /A  - disable the control for the accessing to executable files
  2545.  /M  - disable the memory checking
  2546.  /F  - disable the control for formatting
  2547.  /W  - disable the control for absolute disk writing
  2548.  /R  - disable the registers window
  2549.  /D  - disable the control for the dangerous calls
  2550.  /V  - load antiviral database and enable known virus detection
  2551.  
  2552. If no options are choosen then all the modes are switched ON
  2553. excluding /V argument. For example, when loading the AVPTSR with
  2554. the options:
  2555.  
  2556.  C:>AVPTSR /A /F /R
  2557.  
  2558. all modes will be activated except the control for the executable files and
  2559. control for the disk formatting. The register window is closed.
  2560.  
  2561.  C:>AVPTSR /V
  2562.  
  2563. The "/V" option instructs the AVPTSR to load the antiviral databases listed
  2564. in AVP.SET file into memory. The AVPTSR will now detect known viruses in
  2565. files and sectors when accessing them. This option uses a large portion of
  2566. the system memory.
  2567.  
  2568.  
  2569.  
  2570.  4.2.  Messages List
  2571.  ────────────────────────────────────────────────────────────────────
  2572.  
  2573. When "suspicious" behavior of the computer is found the AVPTSR displays
  2574. a warning message and waits for the your instruction to allow or cancel
  2575. the access to this file or sector. The AVPTSR displays a warning message
  2576. also when the a virus is detected in the file or disk sector.
  2577.  
  2578.  ┌────────────────────────────┐
  2579.  │ PROGRAM_NAME               │
  2580.  │ warning message            │
  2581.  │                            │
  2582.  │ [ OK ] [ Cancel ] [ Free ] │
  2583.  └────────────────────────────┘
  2584.  
  2585. If the warning box appears you must either to allow [ OK ] or disallow
  2586. [ Cancel ] the operation that caused the warning message. It's possible to
  2587. disable the control for this function by selecting [ Free ]. When selecting
  2588. the [ OK ] operation the computer will continue the execution of the
  2589. operation that was stopped. When canceling the operation by selecting the
  2590. [ Cancel ] selection the AVPTSR sets the error code that causes the error
  2591. message ("file not found", "disk is write protected" etc...) and return to
  2592. the program which has called the "suspicious" operation.
  2593.  
  2594. Some operations are executed repeatedly (performing disk formatting or
  2595. optimization). In that case it is convenient to turn off the
  2596. corresponding mode for the time being. The warning messages for that mode
  2597. are switched off and the warning messages will not be displayed.
  2598.  
  2599.  
  2600.  Virus Detection
  2601.  ────────────────────────────────────────────────────────────────────
  2602.  
  2603. The AVPTSR controls the access to executable files, and disk sectors, and
  2604. checks these objects for the known viruses. If a virus is found then the
  2605. AVPTSR displays one of the messages:
  2606.  
  2607.  ┌──────────────────────────────┐  ┌──────────────────────────────┐
  2608.  │ Disk X:                      │  │ File FILE_NAME               │
  2609.  │ infected by virus VIRUS_NAME │  │ infected by virus VIRUS_NAME │
  2610.  └──────────────────────────────┘  └──────────────────────────────┘
  2611.  
  2612. The virus detection routine may be turned on at anytime if the antiviral
  2613. database is loaded into the memory when the AVPTSR is installed. If the
  2614. database is not installed, that routine cannot be turned on. The AVPTSR may
  2615. scan the files on their execution (Scan on EXEC) or on their opening (Scan
  2616. on OPEN).
  2617.  
  2618.  
  2619.  Access to Executable Files
  2620.  ────────────────────────────────────────────────────────────────────
  2621.  
  2622. These messages appear during operations that result in changes to COM
  2623. or EXE files (change of the name, opening for writing, creation of a file).
  2624. Such actions are taken by practically all viruses (except boot viruses) on
  2625. an attempt to infect files.
  2626.  
  2627.  ┌───────────────────────────────┐
  2628.  │ PROGRAM_NAME                  │
  2629.  │ opening for writing FILE_NAME │
  2630.  └───────────────────────────────┘
  2631.  ┌────────────────────┐
  2632.  │ PROGRAM_NAME       │
  2633.  │ creating FILE_NAME │
  2634.  └────────────────────┘
  2635.  ┌────────────────────┐
  2636.  │ PROGRAM_NAME       │
  2637.  │ renaming FILE_NAME │
  2638.  └────────────────────┘
  2639.  
  2640.  
  2641.  Memory and Buffers Check
  2642.  ────────────────────────
  2643.  
  2644. Many viruses leave their resident parts in the computer memory, some of
  2645. them use DOS interrupts. In this case the message that a program attempts
  2646. to go memory-resident will be displayed.
  2647.  
  2648.  ┌─────────────────────────────┐
  2649.  │ PROGRAM_NAME stays resident │
  2650.  └─────────────────────────────┘
  2651.  
  2652. Some of viruses install their resident part into the system buffers by
  2653. excluding one or several of the buffers from the buffer list. The AVPTSR
  2654. checks this and displays the message:
  2655.  
  2656.  ┌────────────────────────────────────────┐
  2657.  │ Number of DOS buffers decreased on xxx │
  2658.  └────────────────────────────────────────┘
  2659.  
  2660. Majority of viruses install their resident part in the memory area
  2661. allocated for programs by decreasing the size of free memory. The AVPTSR
  2662. hooks such situations and displays the message:
  2663.  
  2664.  ┌────────────────────────────────┐
  2665.  │ Free memory decreased on xxx K │
  2666.  └────────────────────────────────┘
  2667.  
  2668. When the mode "Memory check" is switched on the AVPTSR restores the
  2669. interrupt vector table after each program is terminated. This blocks a
  2670. majority of memory-resident viruses from spreading, and some viruses will
  2671. be simply destructed.
  2672.  
  2673.  
  2674.  Disk Access
  2675.  ────────────────────────────────────────────────────────────────────
  2676.  
  2677.  ┌─────────────────────────────┐
  2678.  │ PROGRAM_NAME                │
  2679.  │ writing (int xx) on disk X: │
  2680.  └─────────────────────────────┘
  2681.  ┌─────────────────────────────┐
  2682.  │ PROGRAM_NAME                │
  2683.  │ formatting (int xx) disk X: │
  2684.  └─────────────────────────────┘
  2685.  
  2686. These messages inform you that a program is trying to write to the disk one
  2687. or more sectors by using absolute sector addressing or is trying to format
  2688. one or several disk sectors. These functions normally are not used by
  2689. ordinary programs (except utilities for disk formatting, optimization and
  2690. restoring) but are used by some viruses. The use of the 13h, 40h, 26h
  2691. interrupts is one of the most effective ways of corrupting information on a
  2692. disk, particularly - the Disk Partition Table and File Allocation Table.
  2693.  
  2694. Attention! In the message about writing to the disk or formatting disk
  2695. sectors with the 13h and 40h interrupts, the letter of the physical disk
  2696. ('A:' first, 'B:'- second and so on) is indicated. If the hard disk is
  2697. divided into several logical disks then in the message the letter of the
  2698. PHYSICAL disk is indicated: 'C:' if the first hard disk is being addressed,
  2699. 'D:' in case when the second hard disk is being addressed. To find out what
  2700. logical disk is being written to, it is necessary to analyze Disk Partition
  2701. Tables on all logical disks.
  2702.  
  2703.  
  2704.  Dangerous DOS Functions Call
  2705.  ────────────────────────────────────────────────────────────────────
  2706.  
  2707.  ┌────────────────┐
  2708.  │ PROGRAM_NAME   │
  2709.  │ dangerous call │
  2710.  └────────────────┘
  2711.  
  2712. Messages of this kind warn you that there is a dangerous call to DOS that
  2713. is not typically used for application programs. Dangerous DOS functions are
  2714. often used by viruses to spread themselves or to have the access to the DOS
  2715. system areas.
  2716.  
  2717.  
  2718.  Register Window
  2719.  ────────────────────────────────────────────────────────────────────
  2720.  
  2721. When the "registers" mode is switched on, the AVPTSR will be accompanied by
  2722. the list of all registers states.
  2723.  
  2724.  ┌────────────────────────────┬───────────────────────────────────┐
  2725.  │ PROGRAM_NAME               │ CS:IP=xxxx:xxxx  AX=xxxx  CX=xxxx │
  2726.  │ dangerous call             │ SS:SP=xxxx:xxxx  BX=xxxx  DX=xxxx │
  2727.  │                            │ DS:SI=xxxx:xxxx      BP=xxxx      │
  2728.  │ [ OK ] [ Cancel ] [ Free ] │ ES:DI=xxxx:xxxx      Flags=xxxx   │
  2729.  └────────────────────────────┴───────────────────────────────────┘
  2730.  
  2731.  
  2732.  
  2733.  4.3.  Memory Map
  2734.  ────────────────────────────────────────────────────────────────────
  2735.  
  2736. Memory map contains five columns:
  2737.  
  2738.  the first  - the segment address of MCB (Memory Control Block);
  2739.  the second - the PSP (Program Segment Prefix) segment address,
  2740.  the third  - the block size in paragraphs (16 bytes) or kilobytes;
  2741.  the fourth - the name of a program occupying the memory block
  2742.               or the character '?' if there is no name.
  2743.  the fifth  - the interrupt vectors being used.
  2744.  
  2745.  Also are specified:
  2746.  
  2747.  the size of free memory    ───────────────────────────┐
  2748.  RAM size indicated by BIOS    ─────────────────────┐  │
  2749.  RAM size           ─────────────────────────────┐  │  │
  2750.                                                  │  │  │
  2751.  The discrepancy between total memory size and   │  │  │
  2752.  the size indicated by ROM BIOS or DOS signals   │  │  │
  2753.  often that there is a virus in the system.      │  │  │
  2754.  One should bear in mind  that in some cases     │  │  │
  2755.  this discrepancy is quite legal.                │  │  │
  2756.                         ┌────────────────────────┘  │  └──┐
  2757.                         │                ┌──────────┘     │
  2758.  ╔═════════════════╦════│═════════════╤══│══════════════╤═│═════════╗
  2759.  ║Access to files √║  Total: 640 K    │ ROM BIOS: 640 K │DOS: 640 K ║
  2760.  ║Memory check    √╠════╤════╤═══════╤╧═══════════╤═════╧═══════════╣
  2761.  ║Format sector   √║MCB │PSP │ Size  │   Owner    │ Hooked vectors  ║
  2762.  ║Write to sector √╟────┼────┼───────┼────────────┼─────────────────╢
  2763.  ║Dangerous calls  ║0A49│0A49│  2,368│COMMAND.COM │2E               ║
  2764.  ║Scan on EXE     √║0ADE│0000│     64│   free     │                 ║
  2765.  ║Scan on OPEN     ║0AE3│0A49│    256│COMMAND.COM │                 ║
  2766.  ║Check all files  ║0AF4│0B00│    176│RTSR.COM    │                 ║
  2767.  ║Registers        ║0B00│0B00│  1,536│RTSR.COM    │                 ║
  2768.  ║Remove AVPTSR    ║0B61│0B6D│    176│PRN2FILE.EXE│                 ║
  2769.  ╚═════════════════╣0B6D│0B6D│ 75,104│PRN2FILE.EXE│08 17 28 ED F0 F6║
  2770.  ░░░░░░░░░░░░░░░░░░║1DC4│1DD0│    176│AVPTSR.EXE  │                 ║
  2771.  ░░░░░░░░░░░░░░░░░░║1DD0│1DD0│ 16,888│AVPTSR.EXE  │09 13 1B 20 21 22║
  2772.  ░░░░░░░░░░░░░░░░░░║    │    │       │            │2A 2F 40 EE      ║
  2773.  ░░░░░░░░░░░░░░░░░░║2113│0000│282,304│   free     │FE               ║
  2774.  ░░░░░░░░░░░░░░░░░░║5B13│0000│279,296│   free     │FE               ║
  2775.  ░░░░░░░░░░░░░░░░░░║9F44│  - │  3,008│    ?       │1C 21 ────┐      ║
  2776.  ░░░░░░░░░░░░░░░░░░║A000│  - │ 98,304│EGA memory  │          │      ║
  2777.  ░░░░░░░░░░░░░░░░░░╚════╧════╧═══════╧════════════╧══════════│══════╝
  2778.                                                              │
  2779.                                   File virus "Yankee" ───────┘
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  ────────────────────────────────────────────────────────────────────
  2787.  5.  Antiviral Utilities  AVPUTIL   (Pro version)
  2788.  ────────────────────────────────────────────────────────────────────
  2789.  
  2790.  
  2791.  
  2792.  
  2793. The Antiviral Utilities are intended to analyze the computer state if it is
  2794. infected by a virus that is unknown to the virus scanner AVP.EXE. The
  2795. Utilities comprise a set of useful functions, integrated into one
  2796. environment.
  2797.  
  2798. WARNING! THIS PROGRAM MAY CAUSE SYSTEM HALT OR LOSS OF DATA. BE CAREFUL!
  2799.  
  2800. AVPUTIL is started either from execution from the command line or by
  2801. pressing hotkey Alt-'+' or Alt-Ctrl-'+' at the same time if used in memory
  2802. resident mode. There are four main menus available:
  2803.  
  2804.  Utilities:  activating, and management of the functions
  2805.  Object:     select the object to work with
  2806.  Block:      blocks management, and find/replace functions
  2807.  Setup:      setup switches, and exit keys
  2808.  
  2809.  
  2810. AVPUTIL is executed from DOS prompt in format:
  2811.  
  2812.  AVPUTIL [option] [filename]
  2813.  
  2814.  
  2815.  options:
  2816.  
  2817.  /V      - load FILENAME for view/edit, not for debugging
  2818.  /P      - force AVPUTIL to stay memory resident
  2819.  
  2820.  filename: the file name to view/edit or debug with AVPUTIL (the
  2821.            default mode is "load for debug").
  2822.  
  2823.  
  2824.  
  2825.  5.1.  Menu Utilities
  2826.  ────────────────────────────────────────────────────────────────────
  2827.  
  2828. The Utilities Menu allows you to select, and activate the main functions:
  2829.  
  2830.  ╔════════════════════╗
  2831.  ║ Disassembler Alt-E ║  activate disassembler/debugger
  2832.  ║ Dump         Alt-D ║  activate dump editor
  2833.  ║ Memory map   Alt-M ║  activate memory map
  2834.  ║ Interrupts   Alt-I ║  activate interrupt map
  2835.  ║ System info  Alt-Y ║  show system information
  2836.  ║ Trace result Alt-T ║  show result of interrupt tracing
  2837.  ║ Files        Alt-F ║  show list of file handles
  2838.  ║ Zoom            F5 ║  zoom/unzoom current window
  2839.  ║ User screen Alt-F5 ║  show user screen
  2840.  ║ Next window     F6 ║  move to the next window
  2841.  ╚════════════════════╝
  2842.  
  2843.  
  2844.  5.1.1.  Disassembler/Debugger
  2845.  ───────────────────────────────────────────────────────────────
  2846.  
  2847. The Disassembler allows you to view the contents of memory as a
  2848. sequence of CPU instructions, and to trace this code. This utility is
  2849. convenient for analysis, and debugging of memory resident code
  2850. (for example, for analysis of the memory-resident viruses).
  2851.  
  2852. The start address of code to be disassembled is selected with the cursor
  2853. keys, and the keys of hexadecimal digits, or use GoTo system for fast
  2854. switching.
  2855.  
  2856. Some additional Function keys are available in the Disassembler.
  2857.  
  2858.  
  2859.  5.1.2.  Dump Editor
  2860.  ───────────────────────────────────────────────────────────────
  2861.  
  2862. The Dump Editor displays the contents of the file, sector, or RAM in either
  2863. hexadecimal or ASCII form, and allows you to make changes to them.
  2864.  
  2865. The required address is selected with the cursor keys or the keys of the
  2866. hexadecimal digits. You can also use GoTo system for fast switching.
  2867.  
  2868. You can edit data at any address of memory. Use the TAB key to switch to the
  2869. dump or addresses fields, then use the hexadecimal digits in the hex field or
  2870. the ASCII symbols in the ASCII field. Any changes will appear on the screen,
  2871. and in the memory at the same moment if the edited object is in memory.
  2872.  
  2873. Some additional Function keys that are available in Dump Editor.
  2874.  
  2875.  
  2876.  5.1.3.  Memory Map
  2877.  ───────────────────────────────────────────────────────────────
  2878.  
  2879. The memory map consists of six columns that give you the following
  2880. information:
  2881.  
  2882.  Addr     segment address of memory block
  2883.  PSP      segment address of program segment prefix (PSP)
  2884.  Size     block size in bytes
  2885.  Owner    block owner name (name of a program or system area),
  2886.           if the name is not specified then the character '?' is given
  2887.  Type     the memory block type
  2888.  Hooked   the list of interrupts that point into this memory block.
  2889.  vectors
  2890.  
  2891.  ╔════╤════╤═══════╤════════════╤═══════╤════════════════════════════╗
  2892.  ║Addr│PSP │ Size  │   Owner    │ Type  │      Hooked vectors        ║
  2893.  ╟────┼────┼───────┼────────────┼───────┼────────────────────────────╢
  2894.  ║0A1F│0A2D│    208│COMMAND.COM │envir  │                            ║
  2895.  ║0A2D│0A2D│  2,640│COMMAND.COM │program│23                          ║
  2896.  ║0AD3│0A2D│    256│COMMAND.COM │envir  │                            ║
  2897.  ║0AE4│0AF2│    208│AVPUTIL.COM │envir  │                            ║
  2898.  ║0AF2│0AF2│ 55█▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ │program│22 DF E0 E3 EE FC           ║
  2899.  ║189C│0000│554█ Disassembler █ │       │E4 E7 F9 FD FE              ║
  2900.  ║A000│0008│ 80█ Dump (HEX)   █ │envir  │41 43 46                    ║
  2901.  ║B3B3│  - │   █ Dump (ASCII) █ │program│                            ║
  2902.  ║    │    │   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ │       │                            ║
  2903.  ╚════╧════╧════════════════════╧═══════╧════════════════════════════╝
  2904.  
  2905. Use the cursor line to select the block, and press the <Enter> key to
  2906. activate the Memory Map menu. This menu allows you to select how to view the
  2907. corresponding block with either the Disassembler or Dump. When the
  2908. Disassembler or Dump editors are used, the address offset will be set
  2909. to 100h if the type of block is a program. Otherwise it will be set to zero.
  2910.  
  2911.  
  2912.  5.1.4.  Interrupt Map
  2913.  ───────────────────────────────────────────────────────────────
  2914.  
  2915. This window displays the information about the interrupt vectors states,
  2916. the number of the interrupt, the vector value in the format SEGMENT:OFFSET,
  2917. and the name of the program or the memory system area the interrupt vector
  2918. points to. For the interrupts which are used most often their functions
  2919. (purpose) are commented.
  2920.  
  2921.  ╔═══════╤═══════════╤══════════════╤════════════════════════════════╗
  2922.  ║Int 04 │ 0070:06F4 │ MSDOS.SYS    │ Int 4 on overflow              ║
  2923.  ║Int 05 │ 012F:0014 │ QEMM386$     │ Print screen                   ║
  2924.  ║Int 06 │ 012F:0018 │ QEMM386$     │ 80286+ Undefined opcode        ║
  2925.  ║Int 07 │ 01█▀▀▀▀▀▀▀▀▀▀▀▀▀▀█6$     │ 80286+ No math unit            ║
  2926.  ║Int 08 │ 02█ Disassembler █.exe   │ IRQ0 - Timer                   ║
  2927.  ║Int 09 │ F6█ Dump (HEX)   █OM     │ IRQ1 - Keyboard                ║
  2928.  ║Int 0A │ B6█ Dump (ASCII) █       │ IRQ2 - EGA vertical retrace    ║
  2929.  ║Int 0B │ B6█ Tracer       █       │ IRQ3 - COM port 2              ║
  2930.  ║Int 0C │ EB█ Interceptor  █OM     │ IRQ4 - COM port 1              ║
  2931.  ║Int 0D │ B6█ New value    █       │ IRQ5 - Fixed disk or LPT1      ║
  2932.  ║Int 0E │ B6█▄▄▄▄▄▄▄▄▄▄▄▄▄▄█       │ IRQ6 - Diskette                ║
  2933.  ╚═══════╧══════════════════════════╧════════════════════════════════╝
  2934.  
  2935. Use the cursor line or press the hexadecimal digits to select the interrupt
  2936. vector, then press the <Enter> key to activate the Interrupt menu. This menu
  2937. allows you to select what your desired action is with this interrupt vector.
  2938.  
  2939.  Disassembler         disassembler from the interrupt address
  2940.  Dump (HEX)           dump from the interrupt address
  2941.  Dump (ASCII)         dump from the interrupt address
  2942.  Tracer               trace this interrupt
  2943.  Interceptor          intercept this interrupt
  2944.  New value            change the value of this interrupt vector
  2945.  
  2946.  
  2947.  5.1.5.  Tracer
  2948.  ───────────────────────────────────────────────────────────────
  2949.  
  2950. WARNING! Use of this function with incorrect parameters may cause your
  2951. system to halt or loss of data!
  2952.  
  2953. The tracer goes along the path (handler) of the specified interrupt, and
  2954. provides the tracing assembler listing. The listing comprises the names of
  2955. the programs which hook the specified interrupt, the addresses,
  2956. hexadecimal dump, and the mnemonics of assembler instructions that are
  2957. executed during the tracing process. The tracer is useful for detection of a
  2958. unknown virus, and it is able to help you to analyze it.
  2959.  
  2960. Selection of the interrupt to be traced, and initial states of the registers
  2961. are made in the registers menu:
  2962.  
  2963.  █▀▀▀▀▀▀▀▀▀ Trace Int 21h : ▀▀▀▀▀▀▀▀▀█
  2964.  █ AX 6200  CS:IP 0000:0000  FL 7202 █
  2965.  █ BX 0000  DS:SI 1CEE:0000          █
  2966.  █ CX 0000  ES:DI 1CEE:0000          █
  2967.  █ DX 0000  SS:SP 1CEE:FFFE  BP 0000 █
  2968.  █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
  2969.  
  2970. This window is displayed also after executing of selected interrupt.
  2971.  
  2972.  
  2973.  5.1.6.  Interceptor
  2974.  ───────────────────────────────────────────────────────────────
  2975.  
  2976. WARNING! Use of this function may cause your system to halt or loss of
  2977. data!
  2978.  
  2979. The interceptor installs it's own code into the chain of the selected
  2980. interrupt, and reports every call of this interrupt. Upon interception
  2981. the message window is displayed. This window contains the information about
  2982. the number of the hooked interrupt, the current states of all the registers,
  2983. and the string which is pointed to by the selected registers (DS:DX by
  2984. default).
  2985.  
  2986.  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
  2987.  █    INT 21    [AVPUTIL.COM ] █
  2988.  █─────────────────────────────█
  2989.  █ Dos service                 █
  2990.  █═════════════════════════════█
  2991.  █  AX 3D02  DI E88A  DS 0B6D  █
  2992.  █  BX 033A  SI 0037  ES 0B6D  █
  2993.  █  CX 0000  BP 0B6D           █
  2994.  █  DX 8F45  SP 098C  SS 934E  █
  2995.  █─────────────────────────────█
  2996.  █ Flags 0F02  CS:IP 0B6D:50A3 █
  2997.  █═════════════════════════════█
  2998.  █ DS:DX [C:\AVPUTIL.INI     ] █
  2999.  █ Back BA9876543210 [Trace ]  █
  3000.  █ [  OK  ] [Cancel] [ Free ]  █
  3001.  █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
  3002.  
  3003. The interceptor stores the latest 12 interrupt calls, and the information
  3004. about them can be displayed by using the "Back" button.
  3005.  
  3006. The control buttons are:
  3007.  
  3008.  OK     - continue interrupt
  3009.  Cancel - set Carry flag, and break the interrupt call
  3010.  Free   - release the interrupt calls
  3011.  Trace  - calls the INT 3 (Debug Breakpoint). This feature is used by
  3012.           memory resident debuggers which hook INT 3. In other case this
  3013.           button is the same as the "OK" button.
  3014.  
  3015. The number of the interrupt for intercept is selected in the "Interrupts"
  3016. window by pressing the <Enter> key on the selected interrupt, and the
  3017. "Interceptor" line of the pop-up menu is then displayed. The intercepted
  3018. interrupt is marked by a symbol. The resetting of the interceptor is executed
  3019. the same way or by using the "Free" button in the "Interceptor" window.
  3020.  
  3021.  
  3022.  5.1.7.  System Information
  3023.  ───────────────────────────────────────────────────────────────
  3024.  
  3025. The System Information menu displays the state of the computer, for
  3026. example:
  3027.  
  3028.  █▀▀▀▀▀▀▀ System info ▀▀▀▀▀▀▀█
  3029.  █  Main processor: 80486    █
  3030.  █  Processor mode: V86      █
  3031.  █  Coprocessor:    Present  █
  3032.  █  DOS memory:     640 K    █
  3033.  █  Serial ports:            █
  3034.  █  03F8, 02F8               █
  3035.  █  Parallel ports:          █
  3036.  █  0378, 03BC, 03BC         █
  3037.  █  Processor ID:            █
  3038.  █  GenuineIntel             █
  3039.  █  Model: 3  Stepping: 5    █
  3040.  █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
  3041.  
  3042.  
  3043.  5.1.8.  Files List
  3044.  ────────────────────────────────────────────────────────────────────
  3045.  
  3046. The Files menu displays the state of the file handles, including names of 
  3047. the files are opened, the files' open modes, attributes, time and date 
  3048. stamps, sizes and current offsets in the files.
  3049.  
  3050.  
  3051.  
  3052.  5.2.  Menu Object
  3053.  ────────────────────────────────────────────────────────────────────
  3054.  
  3055. The Object Menu allows you to select the object to view or modify.
  3056.  
  3057.  ╔════════════════════╗
  3058.  ║ Memory             ║  set memory as object to work with
  3059.  ║ Load file    Alt-L ║  load file as program into the memory,
  3060.  ║                    ║  and set disassembler/debugger to entry point
  3061.  ║ View file    Alt-V ║  set file as object to work with
  3062.  ║ Log. sector  Alt-G ║  set logical sector as object to work with
  3063.  ║ Phys. sector Alt-P ║  set physical sector as object to work with
  3064.  ╚════════════════════╝
  3065.  
  3066. In the memory resident mode the accessing of files or sectors is available
  3067. when pressing the Alt-Ctrl-'+' keys only.
  3068.  
  3069.  
  3070.  5.3.  Menu Block
  3071.  ────────────────────────────────────────────────────────────────────
  3072.  
  3073. The Block Menu is used to work with blocks of data, and for searching, and
  3074. replacing data.
  3075.  
  3076.  ╔════════════════════╗
  3077.  ║ Mark            F8 ║  mark beginning/end of block
  3078.  ║ Find            F7 ║  find code in the object
  3079.  ║ Find next Shift-F7 ║  find next pattern in the object
  3080.  ║ Find prev. Ctrl-F7 ║  find previous pattern in the object
  3081.  ║ Replace     Alt-F7 ║  replace code with new one
  3082.  ║ Fill               ║  fill marked area in object with pattern
  3083.  ║ Save         Alt-W ║  save marked area of object as file
  3084.  ╚════════════════════╝
  3085.  
  3086.  
  3087.  5.4.  Menu Setup
  3088.  ────────────────────────────────────────────────────────────────────
  3089.  
  3090. The Menu Setup allows you to configure, and manage the Utilities.
  3091.  
  3092.  ╔══════════════════╗
  3093.  ║ Stop at INT 3    ║  hook breakpoint (INT 3) interrupt vector
  3094.  ║ Change segment   ║  do not change/add 1000h to segment value
  3095.  ║                  ║  on segment bound
  3096.  ║ Address link     ║  set correction of the addresses in different windows
  3097.  ║ Allow graph.mode ║  allows working in different video modes
  3098.  ║ Save desktop     ║  write the current settings into INI file
  3099.  ║ Stay TSR         ║  terminate execution but stay resident in memory
  3100.  ║ Remove TSR       ║  terminate execution, and remove resident part
  3101.  ║                  ║  of program from memory
  3102.  ║ Quit       Alt-X ║  terminate execution, and quit to DOS
  3103.  ╚══════════════════╝
  3104.  
  3105.  
  3106.  5.5.  GoTo system
  3107.  ───────────────────────────────────────────────────────────────
  3108.  
  3109. The Utilities have a GoTo history system for storing, and fast switching
  3110. between different addresses of memory. The GoTo system is available in the
  3111. Dump Editor, and Disassembler.
  3112.  
  3113. To activate the GoTo system press <Enter> or Ctrl-F5 keys. To store the
  3114. current address in the history buffer press <Enter> again. If you want to use
  3115. the address from the history buffer, highlight the required line with the
  3116. cursor keys and press <Enter>.
  3117.  
  3118. You can edit any line of the history buffer. Use hexadecimal digits, and
  3119. register names. For example:
  3120.  
  3121.  100
  3122.  0:46C
  3123.  SS-1:001F+BX-DS+FL
  3124.  CS:IP
  3125.  
  3126.  
  3127.  5.6.  Hot Keys
  3128.  ────────────────────────────────────────────────────────────────────
  3129.  
  3130. The hot keys are:
  3131.  
  3132.  TSR management
  3133.  
  3134.  Alt-'+'        immediate activation of memory resident part
  3135.  Alt-Ctrl-'+'   wait until the DOS functions are free for use,
  3136.                 and activate memory resident part
  3137.  
  3138.  menu management
  3139.  
  3140.  Alt-U          activate Utilities menu
  3141.  Alt-O          activate Object menu
  3142.  Alt-B          activate Block menu
  3143.  Alt-S          activate Setup menu
  3144.  F9             activate the last menu that was called
  3145.  
  3146.  mode management
  3147.  
  3148.  Alt-E, Alt-1   disassembler of the current object
  3149.  Alt-D, Alt-2   hexadecimal dump of the current object
  3150.  Alt-M, Alt-3   memory map
  3151.  Alt-I, Alt-4   interrupt vectors map
  3152.  Alt-F          files list
  3153.  Alt-Y          system information
  3154.  Alt-T          results of the interrupt tracing
  3155.  Alt-X, F10     quit to DOS or to the interrupted program
  3156.  
  3157.  object management
  3158.  
  3159.  Alt-L         load file as program into the memory
  3160.  Alt-V         set file as object to work with
  3161.  Alt-G         set logical sector as object to work with
  3162.  Alt-P         set physical sector as object to work with
  3163.  
  3164.  blocks management
  3165.  
  3166.  F8            mark beginning/end of block
  3167.  F7            find code in the object
  3168.  Shift-F7      find next pattern in the object
  3169.  Ctrl-F7       find previous pattern in the object
  3170.  Alt-F7        replace code with new one
  3171.  Alt-W         save marked area of object as file
  3172.  
  3173.  windows management
  3174.  
  3175.  F5            zoom/unzoom the current window
  3176.  Alt-F5        show user screen
  3177.  F6            move to the next window
  3178.  Tab           move to the next field of the window
  3179.  
  3180.  
  3181.