AST RESEARCH, INC.         TECHNICAL BULLETIN #1299              9-11-95



     SAMSUNG KOREAN LANGUAGE PROGRAM (HANME) HANGS ON PENTIUM SYSTEMS


PROBLEM:
   When attempting to run the HANME Korean language program on Pentium 
   systems, the program will hang.

CAUSE:
   The HANME program uses self-modifying code as a software protection 
   scheme to prevent disassembly or reverse engineering of the software.  
   In one section of the code, the program begins executing from within 
   the interrupt vector table and modifies the code fragment it is 
   executing.  With 486 and earlier CPUs this strategy works because the 
   CPU is executing code from the instruction prefetch queue, 
   effectively a multi-byte instruction cache which varies in size 
   between different CPUs.  Even though the memory addresses that the 
   program is executing has changed, the CPU will continue to execute 
   the code in the prefetch queue until it needs to refill from main 
   memory.  With the Pentium CPU, this strategy does not work.  When the 
   Pentium detects that an instruction in the prefetch queue has been 
   modified by a write it will flush the instruction prefetch queue and 
   refill it with the newly modified code and begin executing.  In the 
   case of the HANME program, this means that it will begin executing 
   data in the interrupt vector table until the system hangs because of 
   a general protection violation or in invalid opcode error

SOLUTION:
   The customer should contact the software developer for this program 
   and request an update that is compatible with Pentium systems.