Cambiar instruccion JZ

Iniciado por p52sarup, 29 Julio 2018, 14:30 PM

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

p52sarup

Hola a todos,

Como podria cambiar esta instruccion para que, independientemente de lo que lea, siempre se vaya por el camino que yo quiero.

Os paso una imagen, gracias

https://ibb.co/nqonjT

Serapis

#1
Si miras las instrucciones previas...
Código (asm) [Seleccionar]
   Xor r14b, r14b     <---- pone a 0  r14b

Estas 2 instrucciones:
 
Código (asm) [Seleccionar]

   cmp eax, 1  <----
   jz direccion


Equivalen a esto:

Si (eax<>1) luego
  salta loc_7FF... (probablemente la dirección de una función)
' Y si no
  no se ve que sigue, típicamente continuará sin saltar... esto sería... no hay un caso alternativo...
'fin si


Bueno, basta cambiar la instrucción de comparación
Aprovechando que r14b ya sabemos que es 0... y 0 es distinto de 1...

Si queremos que siempre derive hacia la llamada:
Código (asm) [Seleccionar]
   cmp r14b, 1       <---- 0 siempre es distinto de 1

..y si queremos que siempre derive hacia el otro lado, el resultado de la comparación debe ser válida, luego:
Código (asm) [Seleccionar]
   cmp eax, eax       <----- n siempres es igual a n, sea cual sea el valor de n.



mmmm.... se me ocurre que no es tu propio código, si no que estés desemsamblando el código de alguien para modificarlo... así que espero que tengas experiencia.

p52sarup

Gracias por tu respuesta.
La verdad, para serte sincero, estoy inicandome en esto. Pero bueno siempre hay un inicio.

He hecho una cosilla, pero no se si voy bien encaminado.
He cambiado el registro ZF, anteriormente estaba en 0 y le he puesto 1. con esto ya me cambia al camino que quiero. Pero claro no se si esta modificacion se guarda en el codigo de ensamblado.

Flamer

Cita de: p52sarup en 29 Julio 2018, 17:22 PM

He hecho una cosilla, pero no se si voy bien encaminado.
He cambiado el registro ZF, anteriormente estaba en 0 y le he puesto 1. con esto ya me cambia al camino que quiero. Pero claro no se si esta modificacion se guarda en el codigo de ensamblado.


no son registros son banderas y no no se aguardan si quieres que salte todo el tiempo cambia JZ por JMP y luego aguarda los cambios.....pero mejor te aconsejo que uses x32dbg ya que IDA es mas complejo.....lo puedes descargar de aquí https://x64dbg.com/#start 



saludos Flamer

p52sarup

JMZ----entiendo que es que salta directamente.
JZ------salta dependiendo de la condición.

Estoy en lo ciwerto?

Flamer

#5
no hay salto JMZ..... JMP salta todo el tiempo o quieres que entre?

p52sarup

No claro, quiero que entre. Perdon por JMZ (se me ha colado la Z)

Flamer

cambia JZ por JNZ  o simplemente nopea esa linea y es todo


saludos Flamer y dime si te funciono

p52sarup

No puedo editar la funcion, quizas este haciendo algo ma. te paso unas imagenes. Que es nopear?

Muchas gracias por todo de antemano, y perdona mi ignorancia estoy empezandoa jugar con esto ;D

https://ibb.co/knbJPT

p52sarup

#9
ya esta lo he cambiado pero....ahora como guardo?

porque cuando corro el programa sigue JZ