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.