/
githubmirror
/
metasploit-framework
Обзор
Документация
Войти
/
githubmirror
/
metasploit-framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
external/source/osx/x86/src/test/test_component.c
76 строк
2 KB
HD Moore
Tons of new Mac OS X code from Dino Dai Zovi and Charlie Miller, more to follow
19 мар 2009, 02:28
19 мар 2009, 02:28
13706d1
Код
Авторство
О чём код?
/* * test_component: Read in a component and execute it */ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <pthread.h> int read_and_exec_file(char* file) { char* buf = malloc(10000); int f, n; if ((f = open(file, O_RDONLY, 0)) < 0) { perror("open"); exit(EXIT_FAILURE); } if ((n = read(f, buf, 100000)) < 0) { perror("read"); exit(EXIT_FAILURE); } //printf("==> Read %d bytes, executing component...\n", n); ((void(*)(void))buf)(); printf("==> Done.\n"); return 0; } int create_read_and_exec_thread(char* file) { int err; pthread_t pthread; void* return_value; if ((err = pthread_create(&pthread, NULL, read_and_exec_file, (void*)file)) != 0) { fprintf(stderr, "pthread_create: %s\n", strerror(err)); return -1; } if ((err = pthread_join(pthread, &return_value)) != 0) { fprintf(stderr, "pthread_join: %s\n", strerror(err)); return -1; } return 0; } int main(int argc, char* argv[]) { int c; int threaded = 0; while ((c = getopt(argc, argv, "tp:")) != EOF) { switch (c) { case 't': threaded = 1; break; default: fprintf(stderr, "usage: %s [ -t ] payload_bin\n", argv[0]); exit(EXIT_FAILURE); } } if (threaded) create_read_and_exec_thread(argv[optind]); else read_and_exec_file(argv[optind]); }