Чем собственно джамп не устраивает?
Подозреваю у вас проблема с установкой хука на джамп, так как инструкции JMP имеют относительную адресацию, а вы не пересчитываете смещение после переноса кода (либо делаете это не верно).
Ну есть прям совсем не получается то можно вот:
Код:
#define JMP_VALUE(addr) (*(DWORD*)((addr) + 1))
#define FOLLOW_JMP(addr) (JMP_VALUE(addr) + (DWORD)(addr) + 5)
#define FOLLOW_JUMPS(a) while (IS_JMP(a)) \
{ \
a = FOLLOW_JMP(a); \
}