zzqq0103

Untitled

Mar 12th, 2024
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.51 KB | None | 0 0
  1. #define _GNU_SOURCE
  2.  
  3. #include <endian.h>
  4. #include <stdint.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <sys/syscall.h>
  9. #include <sys/types.h>
  10. #include <unistd.h>
  11.  
  12. uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
  13.  
  14. int main(void)
  15. {
  16.   syscall(__NR_mmap, /*addr=*/0x1ffff000ul, /*len=*/0x1000ul, /*prot=*/0ul,
  17.           /*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul, /*fd=*/-1,
  18.           /*offset=*/0ul);
  19.   syscall(__NR_mmap, /*addr=*/0x20000000ul, /*len=*/0x1000000ul,
  20.           /*prot=PROT_WRITE|PROT_READ|PROT_EXEC*/ 7ul,
  21.           /*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul, /*fd=*/-1,
  22.           /*offset=*/0ul);
  23.   syscall(__NR_mmap, /*addr=*/0x21000000ul, /*len=*/0x1000ul, /*prot=*/0ul,
  24.           /*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul, /*fd=*/-1,
  25.           /*offset=*/0ul);
  26.   intptr_t res = 0;
  27.   memcpy((void*)0x20000200, "/dev/kvm\000", 9);
  28.   res = syscall(__NR_openat, /*fd=*/0xffffffffffffff9cul, /*file=*/0x20000200ul,
  29.                 /*flags=*/0ul, /*mode=*/0ul);
  30.   if (res != -1)
  31.     r[0] = res;
  32.   res = syscall(__NR_ioctl, /*fd=*/r[0], /*cmd=*/0xae01, /*type=*/0ul);
  33.   if (res != -1)
  34.     r[1] = res;
  35.   *(uint32_t*)0x20bf7000 = 0;
  36.   *(uint32_t*)0x20bf7004 = 0;
  37.   *(uint64_t*)0x20bf7008 = 0;
  38.   *(uint64_t*)0x20bf7010 = 0x2000;
  39.   *(uint64_t*)0x20bf7018 = 0x20000000;
  40.   syscall(__NR_ioctl, /*fd=*/r[1], /*cmd=*/0x4020ae46, /*arg=*/0x20bf7000ul);
  41.   syscall(__NR_madvise, /*addr=*/0x20000000ul, /*len=*/0x600003ul,
  42.           /*advice=MADV_PAGEOUT*/ 0x15ul);
  43.   return 0;
  44. }
  45.  
Advertisement
Add Comment
Please, Sign In to add comment