squidgehack.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7. #include <unistd.h>
  8. extern char **g_argv;
  9. /* Call this MMU Hack kernel module after doing mmap, and before doing memset*/
  10. int mmuhack(void)
  11. {
  12. char kocmd[1024];
  13. int i, mmufd = open("/dev/mmuhack", O_RDWR);
  14. if(mmufd < 0) {
  15. strcpy(kocmd, "/sbin/insmod ");
  16. strncpy(kocmd+13, g_argv[0], 1023-13);
  17. kocmd[1023] = 0;
  18. for (i = strlen(kocmd); i > 0; i--)
  19. if (kocmd[i] == '/') { kocmd[i] = 0; break; }
  20. strcat(kocmd, "/mmuhack.o");
  21. printf("Installing NK's kernel module for Squidge MMU Hack (%s)...\n", kocmd);
  22. system(kocmd);
  23. mmufd = open("/dev/mmuhack", O_RDWR);
  24. }
  25. if(mmufd < 0) return 0;
  26. close(mmufd);
  27. return 1;
  28. }
  29. /* Unload MMU Hack kernel module after closing all memory devices*/
  30. int mmuunhack(void)
  31. {
  32. int ret;
  33. printf("Removing NK's kernel module for Squidge MMU Hack... "); fflush(stdout);
  34. ret = system("/sbin/rmmod mmuhack");
  35. printf("done (%i)\n", ret);
  36. return ret;
  37. }