Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/wait.h>
- #include <dlfcn.h>
- #include <err.h>
- #include <fcntl.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- int main(int argc, char *argv[])
- {
- char* binary = "/path/to/a/binary";
- int status;
- setenv("LD_TRACE_LOADED_OBJECTS", "1", 1);
- switch (fork()) {
- case -1:
- err(1, "fork");
- break;
- default:
- if (wait(&status) <= 0) {
- printf("wait");
- } else if (WIFSIGNALED(status)) {
- fprintf(stderr, "-> %s: signal %d\n",
- binary, WTERMSIG(status));
- } else if (WIFEXITED(status) && WEXITSTATUS(status)) {
- fprintf(stderr, "->%s: exit status %d\n",
- binary, WEXITSTATUS(status));
- }
- break;
- case 0:
- char ld_so[] = "/lib64/ld-linux-x86-64.so.2";
- execl(ld_so, ld_so, binary, (char *)NULL);
- warn("--->%s", binary);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement