/* * This is a quick hack to zap strings in an executable file * by replacing their first byte with a null character. In most * cases, this will effectively turn them into null strings. * This is useful to prevent venders from bombarding you with * irritating startup messages everytime you run their program. * Grrr.... * */ #include main (argc, argv) int argc; char *argv[]; { FILE *fin = NULL; register int ch; register char *sp; long resync; if (argc != 3) { Fatal (fin, "usage: zapstring "); } fin = fopen (argv[2], "r+"); sp = argv[1]; if (fin == NULL) { Fatal (fin, "zapstring: can't open file"); } while ((ch = fgetc (fin)) != EOF) { if (ch == *sp) { resync = ftell (fin); while ((ch = fgetc (fin)) != EOF && ch == *++sp && *sp != '\000'); if (ch != EOF && *sp == '\000') { if (fseek (fin, resync - 1, 0) != 0) { Fatal (fin, "zapstring: can't resync!"); } if (fputc ('\000', fin) != '\000') { Fatal (fin, "zapstring: patch failed in fputc()!"); } break; } else { sp = argv[1]; if (fseek (fin, resync, 0) != 0) { Fatal (fin, "zapstring: can't resync!"); } } } } fclose (fin); exit (0); } Fatal (fin, why) FILE *fin; char *why; { fprintf (stderr, "%s\n", why); fclose (fin); exit (1); }