As Jason already mentioned, everything depends on file. But I want to say something more.
You said:
And, imagine that you can gain control over the Parameters argument.
Does that mean it is exploitable ?
In the same manner control of other ShellExecute
parameters might be gain... You probably understand why I said might, not can.
You didn't included info in question, but I think you meant that control of parameters
is gained editing executable. If so there is such thing.
Imagine file is cmd.exe
and you can control parameters, but in app parameter is C:\file.txt
it has 11 characters, so you could change it into some other up-to 11 characters parameter (if it is smaller then 11, you need to add NULL
s).
However in real situations ShellExecute
parameters are partially hard-coded and are build dynamically during program flow. So answering to your question, ShellExecute
is vulnerable to command injection, however, not every app that uses ShellExecute
could be taken as a target and actual injecting could be not so easy task.