home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / 40hex_4.010 < prev    next >
Text File  |  1995-01-03  |  4KB  |  109 lines

  1. 40Hex Issue 4                                            December 1991
  2.  
  3.              A Further Look Into Cracking Encrypted Virues
  4.              ---------------------------------------------
  5.  
  6.  
  7.     In Censor #1, Rabids' Data Disruptor showed a way to decrypt
  8.     encrypted viruses.  The only problem with the method shown is that
  9.     once you decrypt the virus, it cannot be run without modification.
  10.     I wish to take his theory a little farther, with a different
  11.     approch.
  12.  
  13.     There is a really simple way around the problem.  What you will
  14.     need is a debugger.  I perfer Turbo Debugger, by Borland.  However
  15.     if you are good at the DOS utility Debug, you may be able to follow
  16.     along.
  17.  
  18.     The routine to unencrypt is simple, really simple.  What you will
  19.     need to do is make a small target file for the virus to infect.  A
  20.     100 byte of less file is perfered.
  21.  
  22.     Step One
  23.     --------
  24.  
  25.     Copy the target file to a different filename to make two copies of
  26.     the file.  Example - COPY TARGET.COM DUDE.COM
  27.  
  28.     Step Two
  29.     --------
  30.  
  31.     Infect one of the files, however the virus infectes the file.
  32.     Remember just infect one of the files.
  33.  
  34.     Step Three
  35.     ----------
  36.  
  37.     Load up you dubugger (I'm gonna give Turbo Debugger steps, so people
  38.     with Debug and the Microsoft Debugger will have to improvise) and
  39.     get ready to single step through the virus.
  40.  
  41.     Step Four
  42.     ---------
  43.  
  44.     Start single stepping through the virus.  If the virus is encrypted
  45.     you will hit a loop somwhere near the beginning of the code.   In
  46.     most cases this is an XOR loop.  It will look something like this...
  47.             
  48.     add si, [1234]    ;
  49.     mov di, si        ;
  50.     mov cx, 0123      ; this would be the virus size to unencrypt
  51.  *  mov al, [0105]    ; this is the encryption value's offset or the
  52.                       ; actual encryption value if no brackets are
  53.                       ; around it
  54.     cli               ; auto increment
  55.     lodsb             ; load byte from si position
  56.     xor ah, al        ; xor byte at si
  57.     stosb             ; store it a di (same as si)
  58.     loop 0110         ; loop until cx=0 NOTE: 0110 will be an offset
  59.     ret               ; return when done
  60.  
  61.     Where the "*" is, will be either the location of the encryption
  62.     value, or the actual encryption value if no brackets are around it.
  63.     If there are no brackets, keep that number in mind.  Otherwise write
  64.     the offset down.
  65.  
  66.     Step Five
  67.     ---------
  68.  
  69.     When the encryption procedure is done the virus is then unencrypted.
  70.     If you were to write the virus to disk now, it would not run.  Cause
  71.     as soon as the virus runs it encrypts itself and then jumps into the
  72.     encrypted code.
  73.  
  74.     Follow the program to the part where the virus is about to write the
  75.     virus to the host program.  It will again call on the encryption
  76.     routine.
  77.  
  78.   * Here it is again, but this time, before it XORs anything load the
  79.     encryption value with 0's.  If it is a bytes value load it with 00,
  80.     if it is a word value load it with 0000 as in...
  81.  
  82.     
  83.     add si, [1234]    ;
  84.     mov di, si        ;
  85.     mov cx, 0123      ; this would be the virus size to unencrypt
  86.   * mov al, 00        ; change the encryption value to zero, thus the
  87.                       ; encryption will not take place at all.  Instead
  88.                       ; the virus will produce an original strain.
  89.     cli               ; auto increment
  90.     lodsb             ; load byte from si position
  91.     xor ah, al        ; xor byte at si
  92.     stosb             ; store it a di (same as si)
  93.     loop 0110         ; loop until cx=0 NOTE: 0110 will be an offset
  94.     ret               ; return when done
  95.  
  96.     Now run the program at full speed.  The next file the virus infects
  97.     will be unencrypted, and executable.
  98.  
  99.     NOTE: This method will work only for the types of viruses that use
  100.     this type of encryption.  Mainly non-resident .COM and .EXE
  101.     infectors.  In other words, don't go thinking this trick will work
  102.     on Whale or anything.
  103.  
  104.  
  105.  
  106.  
  107.  
  108. Downloaded From P-80 International Information Systems 304-744-2253
  109.