This seems a little weird to me. What would be an "invalid" parameter to ExitProcess? What reason do you have to think that ExitProcess is at [ebp + 8]? Did you put it there? I would suspect that the error is from some other API.
As far as using some specific address for ExitProcess, doesn't MS randomize this stuff every Tuesday? I don't know much Windows, but this seems spectacularly non-portable!
What's wrong with:
global start
extern ExitProcess
section .text
start:
push 0
call ExitProcess
?
As an experiment, can you get that error from ANY parameter to ExitProcess?
Baffled,
Frank