    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.