No, or at least not in a way that gives any useful information.
The problem lies in step 2, "determine function signature". The vast majority of shared libraries are written in C, or are written in other languages but still use the
cdecl calling convention. In such a case, the function signature contains no information about the types or even number of parameters -- the type and number aren't even fixed (consider
printf()). You could try deducing it by static analysis, but variable argument counts, type-punning, and overly-clever assembly-language programmers will tend to thwart the analysis.
You could certainly crash a library function by placing random data on the stack and then calling the function, but this won't usually give you any useful information about vulnerabilities: the random data will almost never correspond to a situation that could be set up in real-world use. You'll wind up deducing things like "if I pass two random pointers to
strcpy(), it crashes", or "If I don't pass enough parameters to
printf(), it crashes".