コード例 #1
0
size_t fwrite ( const void * ptr,
		size_t size,
		size_t count,
		FILE * stream ) {

	// original fopen function
	size_t (*original_fwrite) ( const void * ptr,
							size_t size,
							size_t count,
							FILE * stream ) = NULL;

	// execute the previous function
	original_fwrite = dlsym(RTLD_NEXT, "fwrite");

	// call the original fopen with the same arugments
	size_t ret = original_fwrite(ptr, size, count, stream);

	// ---------------------------
	// saves the location of the file just open
	if (writeVirusSentence((long)stream, (const char*)ptr)
				== VIRUS_DETECTED) {
		printf("virus\n");
	}
	else
		printf("nonvirus\n");
	// ---------------------------
testCounter();
	// return the result
	return ret;


}
コード例 #2
0
ファイル: cheat.c プロジェクト: yojo3000/NCTU_Unix_HW
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);
}