l'opcode E9 est donc limité à un jump de 7f ff ff ff c'est bien ça ?
Dans les deux sens, donc il couvre tout l'espace d'adressage 32 bits. Je n'ai pas vérifié qu'un jump avec overflow fonctionne, mais ça ne m'étonnerait pas.
À vrai dire, je ne sais pas trop ce que fait 'EA'.
$ printf "\xeaabcdef" > jmp
$ ndisasm -b 32 jmp
00000000  EA616263646566    jmp dword 0x6665:0x64636261
Apparemment il faut spécifier le segment de code et l'offset, donc ce n'est pas ce que tu demandes.
Mais il y a un moyen de le trouver:
$ cat jmp.asm 
bits 32
jmp  [ptr_ma_fonction]
jmp  far [ptr_ma_fonction]
ptr_ma_fonction dd  0x42424242
$ nasm jmp.asm 
$ ndisasm -b 32 jmp
00000000  FF250C000000      jmp dword near [dword 0xc]
00000006  FF2D0C000000      jmp dword far [dword 0xc]
0000000C  42                inc edx
0000000D  42                inc edx
0000000E  42                inc edx
0000000F  42                inc edx
L'opcode fait deux octets et le paramètre est l'adresse du pointeur en little-endian. Manque de bol l'instruction que tu veux patcher est plus courte, mais rien ne t'empêche de calculer l'offset.
Ollydbg te permet aussi d'éditer le code et de reconstruire un exécutable avec les modifications que tu as faites. C'est plus pratique que nasm/ndisasm si tu as affaire à du PE.