HEX de JMP

Iniciado por frankener1986, 7 Septiembre 2006, 21:38 PM

0 Miembros y 1 Visitante están viendo este tema.

frankener1986

hola, necesito saber porfavor cual es el valor de JMP en hexadecimal... el de JE es 84, el de JNZ es 85.. y el de JMP ??' gracias!

frankener1986

ya consegui lo que queria, igualmente gracias... se suponia que era EB su valor en hex, pero en realidad, queria hacer mi parche a mano, y habia que reemplazar varios bytes al usar JMP (lo verifique parcheandolo con el olly y luego abriendolo con un comparador de archivos), no como lo que pasa con JE y JNZ, que solo se requiere modificar un byte..., tuve que modificar 4 bytes..

graicas =mente, saludos!

karmany

#2
Puedes hacerlo de este modo:

Voy a abrir un ejecutable cualquiera, por ej. el Nero.
Echo un vistazo al código y voy a cojer el primer JNZ que vea y obtengo lo siguiente:


Ahí se puede observar que  JNZ  corresponde al byte 75 en hexadecimal.

Si pinchas dos veces sobre JNZ observarás que se abre esta ventana:

Aquí puedes editar el contenido.

Así que voy a modificarlo para obtener el valor de JMP así:

Sólo queda pulsar en Assemble y obtengo en rojo por haberlo modificado:

Ahora ya se puede saber de forma muy sencilla que JMP corresponde al byte EB.
Así que en un editor hexadecimal, si quieres poner un salto JMP tienes que sustituir el 75 por EB.

Espero te sirva.

frankener1986

#3
jeje si, esque estaba intentando hacer un parche con VB, ya intenté
poner EB, pero al poner un JMP, se cambiaron cuatro bytes... asi que tuve que modificar cuatro bytes en cuatro offsets :P

karmany, muchas gracias por tomarte la molestia de explicarlo todo tan bien de hasta sacar screenshoots y recortarlas xD

hmm.. y al igual que en visual basic, para escribir un archivo binario en hexadecimal (editarlo mejor dicho), se declara un byte y un offset, y se escribe con
Open archivo for Binary Access Write as num, esto alguien sabe como hacerlo con cpp? gracias!


para aclarar más lo que quiero hacer con c++, quiero hacer lo msimo que haría este código en visual basic:

Dim valor As Byte
valor = &HE9
Open App.path + "\programa.exe" For Binary Access Write As #1
Put #1, &H1580F2, valor
Close #1

dSx

Eso no es del todo cierto... La cdificación de la instrucción jmp sigue una forma q depende de la arquitectura del procesador, ese valor es correcto pero solo si el salto es corto (short).

karmany

Ok dSx, pero la forma es válida para obtener el valor hexadecimal,
sea short o no, aunque bien mencionas que el valor hexadecimal será diferente.