#include #include #include #include unsigned char c[]={0xf0,0x0f,0x00,0x00,0x00}; main() { int i; unsigned short *punch; void(*f)() = (void *) c; punch = (unsigned short *) &c[2]; for(;;) { (*punch)++; #ifdef OPCODES_FOUND_SO_FAR if(*punch == 0xc8c7) (*punch)++; if(*punch == 0xc9c7) (*punch)++; if(*punch == 0xcac7) (*punch)++; if(*punch == 0xcbc7) (*punch)++; if(*punch == 0xccc7) (*punch)++; if(*punch == 0xcdc7) (*punch)++; if(*punch == 0xcec7) (*punch)++; if(*punch == 0xcfc7) (*punch)++; #endif switch(fork()) { case 0: fprintf(stdout, "Trying %02X %02X %02X %02X\n", c[0], c[1], c[2], c[3]) ; fflush (stdout); (*f)(); exit(0); case -1: fprintf(stderr, "Fork failed\n"); break; default: wait(&i); } } }