[universalpackagemanager@universalpackagemanager-pc usr]$ gcc -Wall ./main.c ./*.o ../../ul_exec_libc.so ; ./a.out #*/ size is 126480 size is 168680 passing program and interperater to ul.so: allocating 8 found 2 tokens. program_arguments[1] = -l program_arguments[2] = -h 00400000-00402000 r-xp 00000000 fe:00 1750155 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out 00601000-00602000 r-xp 00001000 fe:00 1750155 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out 00602000-00832000 rwxp 00002000 fe:00 1750155 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out 00832000-00835000 rwxp 00000000 00:00 0 00ad1000-00af2000 rwxp 00000000 00:00 0 [heap] 7f360c9f6000-7f360cb91000 r-xp 00000000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cb91000-7f360cd90000 ---p 0019b000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cd90000-7f360cd94000 r-xp 0019a000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cd94000-7f360cd96000 rwxp 0019e000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cd96000-7f360cd9a000 rwxp 00000000 00:00 0 7f360cd9a000-7f360cda2000 r-xp 00000000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cda2000-7f360cfa1000 ---p 00008000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cfa1000-7f360cfa2000 r-xp 00007000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cfa2000-7f360cfa3000 rwxp 00008000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cfa3000-7f360cfc6000 r-xp 00000000 fe:00 2378684 /usr/lib/ld-2.25.so 7f360d18a000-7f360d18d000 rwxp 00000000 00:00 0 7f360d199000-7f360d1c5000 rwxp 00000000 00:00 0 7f360d1c5000-7f360d1c6000 r-xp 00022000 fe:00 2378684 /usr/lib/ld-2.25.so 7f360d1c6000-7f360d1c7000 rwxp 00023000 fe:00 2378684 /usr/lib/ld-2.25.so 7f360d1c7000-7f360d1c8000 rwxp 00000000 00:00 0 7ffd7fb46000-7ffd7fb67000 rwxp 00000000 00:00 0 [stack] 7ffd7fb7a000-7ffd7fb7d000 r--p 00000000 00:00 0 [vvar] 7ffd7fb7d000-7ffd7fb7f000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] aquiring header aquiring program header searching for PT_LOAD and PT_INTERP loading 0x7f360d199010 anywhere = 0 anywhere = 0 LOAD_ELF mapping 0x7f360d199010 anywhere = 1 anywhere = 1 unmapping argvb = save_argv(3, placeholder); printing maps before executing 00400000-0041e000 r-xp 00000000 00:00 0 00601000-00602000 r-xp 00001000 fe:00 1750155 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out 00602000-0061d000 rwxp 00002000 fe:00 1750155 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out 0061d000-00620000 rwxp 00000000 00:00 0 00620000-00832000 rwxp 00020000 fe:00 1750155 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out 00832000-00835000 rwxp 00000000 00:00 0 00ad1000-00af2000 rwxp 00000000 00:00 0 [heap] 7f360c9f6000-7f360cb91000 r-xp 00000000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cb91000-7f360cd90000 ---p 0019b000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cd90000-7f360cd94000 r-xp 0019a000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cd94000-7f360cd96000 rwxp 0019e000 fe:00 2379249 /usr/lib/libc-2.25.so 7f360cd96000-7f360cd9a000 rwxp 00000000 00:00 0 7f360cd9a000-7f360cda2000 r-xp 00000000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cda2000-7f360cfa1000 ---p 00008000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cfa1000-7f360cfa2000 r-xp 00007000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cfa2000-7f360cfa3000 rwxp 00008000 fe:00 1750154 /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so 7f360cfa3000-7f360cfc6000 r-xp 00000000 fe:00 2378684 /usr/lib/ld-2.25.so 7f360d167000-7f360d18a000 r-xp 00000000 00:00 0 7f360d18a000-7f360d18d000 rwxp 00000000 00:00 0 7f360d199000-7f360d1c5000 rwxp 00000000 00:00 0 7f360d1c5000-7f360d1c6000 r-xp 00022000 fe:00 2378684 /usr/lib/ld-2.25.so 7f360d1c6000-7f360d1c7000 rwxp 00023000 fe:00 2378684 /usr/lib/ld-2.25.so 7f360d1c7000-7f360d1c8000 rwxp 00000000 00:00 0 7f360d389000-7f360d38c000 rwxp 00000000 00:00 0 7ffd7fb46000-7ffd7fb67000 rwxp 00000000 00:00 0 [stack] 7ffd7fb7a000-7ffd7fb7d000 r--p 00000000 00:00 0 [vvar] 7ffd7fb7d000-7ffd7fb7f000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] jumping to 0x7f360d167d80 total 4.5M -rw-r--r-- 1 universalpackagemanager universalpackagemanager 125K Jan 25 06:56 0.o -rw-r--r-- 1 universalpackagemanager universalpackagemanager 166K Jan 25 06:56 1.o -rw-r--r-- 1 universalpackagemanager universalpackagemanager 18K Jan 25 06:56 2.o -rw-r--r-- 1 universalpackagemanager universalpackagemanager 1.9M Jan 25 06:56 3.o -rwxr-xr-x 1 universalpackagemanager universalpackagemanager 2.2M Jan 25 14:22 a.out -rw-r--r-- 1 universalpackagemanager universalpackagemanager 0 Jan 25 12:26 a.txt -rw-r--r-- 1 universalpackagemanager universalpackagemanager 17K Jan 25 14:21 main.c [universalpackagemanager@universalpackagemanager-pc usr]$ cat ./main.c /* */ #include #include #include #include #include #include #include #include #include #include void ulexec_array(void * mapped, void * mapped_interpreter, char * args, char **env); // "look deep into yourself, Clarice" -- Hanibal Lector char findyourself_save_pwd[PATH_MAX]; char findyourself_save_argv0[PATH_MAX]; char findyourself_save_path[PATH_MAX]; char findyourself_path_separator='/'; char findyourself_path_separator_as_string[2]="/"; char findyourself_path_list_separator[8]=":"; // could be ":; " char findyourself_debug=0; int findyourself_initialized=0; void findyourself_init(char *argv0) { getcwd(findyourself_save_pwd, sizeof(findyourself_save_pwd)); strncpy(findyourself_save_argv0, argv0, sizeof(findyourself_save_argv0)); findyourself_save_argv0[sizeof(findyourself_save_argv0)-1]=0; strncpy(findyourself_save_path, getenv("PATH"), sizeof(findyourself_save_path)); findyourself_save_path[sizeof(findyourself_save_path)-1]=0; findyourself_initialized=1; } int find_yourself(char *result, size_t size_of_result) { char newpath[PATH_MAX+256]; char newpath2[PATH_MAX+256]; assert(findyourself_initialized); result[0]=0; if(findyourself_save_argv0[0]==findyourself_path_separator) { if(findyourself_debug) printf(" absolute path\n"); realpath(findyourself_save_argv0, newpath); if(findyourself_debug) printf(" newpath=\"%s\"\n", newpath); if(!access(newpath, F_OK)) { strncpy(result, newpath, size_of_result); result[size_of_result-1]=0; return(0); } else { perror("access failed 1"); } } else if( strchr(findyourself_save_argv0, findyourself_path_separator )) { if(findyourself_debug) printf(" relative path to pwd\n"); strncpy(newpath2, findyourself_save_pwd, sizeof(newpath2)); newpath2[sizeof(newpath2)-1]=0; strncat(newpath2, findyourself_path_separator_as_string, sizeof(newpath2)); newpath2[sizeof(newpath2)-1]=0; strncat(newpath2, findyourself_save_argv0, sizeof(newpath2)); newpath2[sizeof(newpath2)-1]=0; realpath(newpath2, newpath); if(findyourself_debug) printf(" newpath=\"%s\"\n", newpath); if(!access(newpath, F_OK)) { strncpy(result, newpath, size_of_result); result[size_of_result-1]=0; return(0); } else { perror("access failed 2"); } } else { if(findyourself_debug) printf(" searching $PATH\n"); char *saveptr; char *pathitem; for(pathitem=strtok_r(findyourself_save_path, findyourself_path_list_separator, &saveptr); pathitem; pathitem=strtok_r(NULL, findyourself_path_list_separator, &saveptr) ) { if(findyourself_debug>=2) printf("pathitem=\"%s\"\n", pathitem); strncpy(newpath2, pathitem, sizeof(newpath2)); newpath2[sizeof(newpath2)-1]=0; strncat(newpath2, findyourself_path_separator_as_string, sizeof(newpath2)); newpath2[sizeof(newpath2)-1]=0; strncat(newpath2, findyourself_save_argv0, sizeof(newpath2)); newpath2[sizeof(newpath2)-1]=0; realpath(newpath2, newpath); if(findyourself_debug) printf(" newpath=\"%s\"\n", newpath); if(!access(newpath, F_OK)) { strncpy(result, newpath, size_of_result); result[size_of_result-1]=0; return(0); } } // end for perror("access failed 3"); } // end else // if we get here, we have tried all three methods on argv[0] and still haven't succeeded. Include fallback methods here. return(1); } #include #include #include #include #include #include #include int make_named_socket (const char *filename) { struct sockaddr_un name; int sock; size_t size; /* Create the socket. */ sock = socket (PF_LOCAL, SOCK_DGRAM, 0); if (sock < 0) { perror ("socket"); exit (EXIT_FAILURE); } /* Bind a name to the socket. */ name.sun_family = AF_LOCAL; strncpy (name.sun_path, filename, sizeof (name.sun_path)); name.sun_path[sizeof (name.sun_path) - 1] = '\0'; /* The size of the address is the offset of the start of the filename, plus its length (not including the terminating null byte). Alternatively you can just do: size = SUN_LEN (&name); */ size = (offsetof (struct sockaddr_un, sun_path) + strlen (name.sun_path)); if (bind (sock, (struct sockaddr *) &name, size) < 0) { perror ("bind"); exit (EXIT_FAILURE); } return sock; } int main(int argc, char **argv, char ** env) { findyourself_init(argv[0]); char newpath[PATH_MAX]; find_yourself(newpath, sizeof(newpath)); // if(1 || strcmp(argv[0],newpath)) { } // char *dummy = strdup( newpath ); // char *dname = dirname( dummy ); // OBJECT START extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start; extern size_t _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size; extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end; char * p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start; char ch; int bytes=1; printf("size is %zu\n", (size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size); char * array = malloc((size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size); while ( p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end ) { ch = *p++; array[bytes-1] = ch; bytes++; } bytes--; extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start; extern size_t _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size; extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end; char * pi = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start; char chi; int bytesi=1; printf("size is %zu\n", (size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size); char * arrayi = malloc((size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size); while ( pi != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end ) { chi = *pi++; arrayi[bytesi-1] = chi; bytesi++; } bytesi--; printf("passing program and interperater to ul.so:\n"); ulexec_array(array, arrayi, "-l -h", env); return (0); printf("Extracting...\n"); // // OBJECT START // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start; // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size; // we keep this just in case we ever need it // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end; // char * a0p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start; // FILE *a0fp; // chdir(dname); // // mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("bin", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("bin"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // a0fp = fopen("./ls", ("w+")); // while ( a0p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end ) fputc(*a0p++, a0fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger // fclose(a0fp); // chmod("./ls", 00755); // chdir(dname); // // // OBJECT END // // // OBJECT START // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start; // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size; // we keep this just in case we ever need it // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end; // char * a1p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start; // FILE *a1fp; // chdir(dname); // // mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("lib64", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("lib64"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // a1fp = fopen("./ld-linux-x86-64.so.2", ("w+")); // while ( a1p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end ) fputc(*a1p++, a1fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger // fclose(a1fp); // chmod("./ld-linux-x86-64.so.2", 00755); // chdir(dname); // // // OBJECT END // // // OBJECT START // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_start; // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_size; // we keep this just in case we ever need it // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_end; // char * a2p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_start; // FILE *a2fp; // chdir(dname); // // mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("lib", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("lib"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // a2fp = fopen("./libcap.so.2", ("w+")); // while ( a2p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_end ) fputc(*a2p++, a2fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger // fclose(a2fp); // chmod("./libcap.so.2", 00644); // chdir(dname); // // // OBJECT END // // // OBJECT START // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_start; // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_size; // we keep this just in case we ever need it // extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_end; // char * a3p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_start; // FILE *a3fp; // chdir(dname); // // mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("lib", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("lib"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // a3fp = fopen("./libc.so.6", ("w+")); // while ( a3p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_end ) fputc(*a3p++, a3fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger // fclose(a3fp); // chmod("./libc.so.6", 00755); // chdir(dname); // // // OBJECT END // // // MKDIRS START // chdir(dname); // // mkdir("usr", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // chdir(dname); // // // MKDIRS END // // // MKDIRS START // chdir(dname); // // mkdir("usr", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("bin", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("bin"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // chdir(dname); // // // MKDIRS END // // // MKDIRS START // chdir(dname); // // mkdir("usr", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("lib64", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("lib64"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // chdir(dname); // // // MKDIRS END // // // MKDIRS START // chdir(dname); // // mkdir("usr", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // mkdir("lib", 0777); // // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // chdir("lib"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir // // chdir(dname); // // // MKDIRS END // // // CHMODDIR START // chdir(dname); // chmod("usr", 00755); // chdir(dname); // // // CHMODDIR END // // // CHMODDIR START // chdir(dname); // chmod("usr/bin", 00755); // chdir(dname); // // // CHMODDIR END // // // CHMODDIR START // chdir(dname); // chmod("usr/lib64", 00755); // chdir(dname); // // // CHMODDIR END // // // CHMODDIR START // chdir(dname); // chmod("usr/lib", 00755); // chdir(dname); // // // CHMODDIR END // // free( dummy ); // printf("Extracted\n"); return 0; } [universalpackagemanager@universalpackagemanager-pc usr]$