Для реальных ситуаций, надо либо смотреть какие инструкции в начале функции и прописывать их в jmpMessageBoxW() руками,
либо использовать дизассемблер длин инструкций и определять длину и тип копируемых инструкций с его помощью.
Также надо учитывать что когда в начало функции пишется "jmp hook", то если какой-то поток в это время исполняет код в этом месте - прога упадет, по этому либо надо быть уверенным что никакие потоки эту часть кода исполнять не будут, либо замораживать все потоки, проверять это и если надо - переносить eip на новый код.
Дизассемблер длин инструкций, адаптированный для VC++ можно посмотреть тут
http://code.google.com/p/nabla-kb/so...s/rce/hook.cpp
(функция instruction_length, пропустить сложно; остальной код в этом сорце работает только частично)