Guest User

Untitled

a guest
Dec 31st, 2013
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.55 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. rm main.so
  4.  
  5. echo '#define _GNU_SOURCE
  6. #include <dlfcn.h>
  7. #include <stdio.h>
  8. #include <stdarg.h>
  9. #include <stdlib.h>
  10.  
  11. void dump(const char* text, int fildes, const void* buf, ssize_t size)
  12. {
  13.  ssize_t i;
  14.  if(size==-1)
  15.  {
  16.    printf("%s(%i)=-1\n\n",text, fildes);
  17.    return;
  18.  }
  19.  printf("%s(%i)=%zu\n  ",text, fildes, size);
  20.  for(i=0;i<size;i++)
  21.    printf("%02X ", ((const char*)buf)[i]);
  22.  printf("\n\n");
  23. }
  24.  
  25. ssize_t write(int fildes, const void *buf, size_t nbyte)
  26. {
  27.  static ssize_t (*real_write)(int fildes, const void *buf, size_t nbyte) = 0;
  28.  ssize_t result;
  29.  if(!real_write) real_write = dlsym(RTLD_NEXT, "write");
  30.  result = real_write(fildes, buf, nbyte);
  31.  dump("write", fildes, buf, result);
  32.  return result;
  33. }
  34.  
  35. ssize_t read(int fildes, void *buf, size_t nbyte)
  36. {
  37.  static ssize_t (*real_read)(int fildes, void *buf, size_t nbyte) = 0;
  38.  ssize_t result;
  39.  if(!real_read) real_read = dlsym(RTLD_NEXT, "read");
  40.  result = real_read(fildes, buf, nbyte);
  41.  dump("read", fildes, buf, result);
  42.  return result;
  43. }
  44.  
  45. int open(const char *filename, int flags, ...)
  46. {
  47.  static int (*real_open)(const char *, int, mode_t) = 0;
  48.  int result;
  49.  va_list ap;
  50.  mode_t mode;
  51.  
  52.  if (!real_open) real_open = dlsym(RTLD_NEXT, "open");
  53.  
  54.  va_start(ap, flags);
  55.  mode = va_arg(ap, mode_t);
  56.  va_end(ap);
  57.  
  58.  result = real_open(filename, flags, mode);
  59.  
  60.  printf("open(%s)=%i\n\n", filename, result);
  61.  
  62.  return result;
  63. }
  64. ' | gcc -fPIC -shared -Wl,-soname,main.so -o main.so -xc -
  65. LD_PRELOAD=$PWD/main.so putty >out.log
Advertisement
Add Comment
Please, Sign In to add comment