	      Load and execute program, TbMem exploit  ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ
			     Written by 	       ÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ
			    Darkman/29A 		ÜÜÜÛÛß ßÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
						       ÛÛÛÜÜÜÜ ÜÜÜÜÛÛÛ ÛÛÛ ÛÛÛ
						       ÛÛÛÛÛÛÛ ÛÛÛÛÛÛß ÛÛÛ ÛÛÛ

ÄÄÄÄÄÄÄÄÄÄÄÄ
Introduction
ÄÄÄÄÄÄÄÄÄÄÄÄ

  When a program is terminated (function 00h, 31h and 4Ch), TbMem examines if
a interrupt has been set by comparing the interrupt vector table with its
lookup table. TbMem does nothing more than comparing the interrupt vector
table with its lookup table. TbMem doesn't examine every interrupt vector in
the interrupt vector table, below is an overview of the interupt vectors being
examined by TbMem:

  INT 08h (IRQ 0  System timer)
  INT 09h (IRQ 1  Keyboard)
  INT 10h (BIOS System Video Services)
  INT 13h (BIOS Fixed disk/FDD Services)
  INT 15h (BIOS System Services)
  INT 16h (BIOS Keyboard Services)
  INT 17h (BIOS Printer Services (LPT))
  INT 1Ah (BIOS Real-Time Clock Services)
  INT 1Ch (BIOS User Timer Tick)
  INT 20h (DOS Program Terminate)
  INT 21h (DOS Function call)
  INT 26h (DOS Absolute Disk Write)
  INT 28h (DOS Idle)
  INT 29h (DOS Fast Console Output)
  INT 2Ah (Local Area Network)
  INT 2Fh (Software Multiplex)
  INT 40h (BIOS Diskette Service)
  INT 50h (BIOS Reserved)
  INT 70h (IRQ 8  AT Real Time Clock)
  INT 76h (IRQ 14 AT Fixed Disk)

ÄÄÄÄÄÄÄÄÄÄÄ
The exploit
ÄÄÄÄÄÄÄÄÄÄÄ

  When a program is executed (function 4B00h), the lookup table is recreated.
This means if a virus makes changes in the interrupt vector table and then
afterwards execute or just tries to execute some other program. TbMem will be
unable to detect any changes in the interrupt vector table, since the lookup
table will be identical to the interrupt vector table. To avoid TbMem
detecting changes in the interrupt vector table simply include the following
code in your virus after the interrupt vectors has been set:

	     mov     ax,4b00h		 ; Load and execute program
	     int     21h

ÄÄÄÄÄÄÄÄÄÄÄ
Final notes
ÄÄÄÄÄÄÄÄÄÄÄ

  This technique could easily be combined with the Server function call DOS
exploit, making the exploit even more powerful. A example of how to use the
Server function call DOS exploit can be found in Carriers, which is included
in 29A Magazine issue 2.

  I don't know for how long the above described exploit has been working, but
it seems like Qark already knew about this exploit long ago. A example of this
TbMem exploit can also be found in Padania, which is included in VLAD Magazine
issue 7.

  I've documented another TbMem exploit, which amazingly enough still works.
You can find the article, which I've named "ThunderBYTE Anti-Virus API's", in
Source of Kaos Magazine issue 3. It exploits both TbMem and TbScanX.
