10 void CallUser(void *Entry, int argc, char *argv[], char **envp) __attribute__((noreturn));
13 int main(int argc, char *argv[], char **envp)
19 int (*appMain)(int, char *[], char **);
22 int syscall_handle = -1;
24 for( i = 1; i < argc; i ++ )
26 if(strcmp(argv[i], "--key") == 0) {
27 syscall_handle = atoi(argv[++i]);
31 if(strcmp(argv[i], "--binary") == 0) {
36 if(strcmp(argv[i], "--open") == 0) {
37 if( acess_open(argv[++i], 6) == -1 ) { // Read/Write
38 fprintf(stderr, "Unable to open '%s'\n", argv[i]);
44 if( argv[i][0] != '-' ) break;
49 "Usage: ld-acess <executable> [arguments ...]\n"
51 "--key\t(internal) used to pass the system call handle when run with execve\n"
52 "--binary\tLoad a local binary directly\n"
53 "--open\tOpen a file before executing\n"
64 printf("Exectutable Path: '%s'\n", appPath);
65 printf("Executable argc = %i\n", appArgc);
67 base = Binary_Load(appPath, (uintptr_t*)&appMain);
68 printf("base = %p\n", base);
69 if( !base ) return 127;
71 printf("==============================\n");
72 printf("%i %p ", appArgc, appArgv);
73 for(i = 0; i < appArgc; i ++)
74 printf("\"%s\" ", appArgv[i]);
76 printf("appMain = %p\n", appMain);
78 __asm__ __volatile__ (
83 : : "r" (envp), "r" (appArgv), "r" (appArgc), "r" (appMain) );
86 CallUser(appMain, appArgc, appArgv, envp);
88 return appMain(appArgc, appArgv, NULL);
92 void CallUser(void *Entry, int argc, char *argv[], char **envp)
94 __asm__ __volatile__ (
97 : : "r" (Entry), "r" (&argc)
102 void Warning(const char *Format, ...)
106 va_start(args, Format);
107 vprintf(Format, args);
112 void Notice(const char *Format, ...)
116 va_start(args, Format);
117 vprintf(Format, args);