elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Ayuda con fadd qword ptr [xxxxxx]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con fadd qword ptr [xxxxxx]  (Leído 5,353 veces)
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Ayuda con fadd qword ptr [xxxxxx]
« en: 1 Diciembre 2013, 18:45 pm »

Buenas a todos

A ver, no estoy acostumbrado a trabajar con ASM y tengo una duda que no puedo resolver xD

Estoy trabajando con una variable de tiplo single (float) y he llegado a la instrucción que modifica dicha variable:

fadd qword ptr [Project1.exe+10A0]
fstp dword ptr [esi+34]


La primera instrucción me añade (fadd) el valor de Project1.exe+10A0 (que tiene un valor de 0.25). Luego la segunda instrucción almacena el valor en la variable esi+34 ¿lo digo bien? Bueno, pues yo quiero aumentar 0.75 en lugar de 0.25, he probado lo siguiente:

fadd qword ptr [0.75] = Ya se que eso no funciona, pero tenía que probarlo
fadd qword ptr 0.75 = Tampoco funciona
mov [esi+34],0.75 = Tampoco funciona

Como podéis observar, lo estoy haciendo fatal, jaja. Cual es la instrucción que me permite añadir el valor que yo quiera a mi variable de tiplo Single (float)?

Saludos y gracias


En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
cpu2


Desconectado Desconectado

Mensajes: 1.000


Ver Perfil
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #1 en: 1 Diciembre 2013, 21:12 pm »

Para cargar valores en el registro tienes que usar la instruccion fld, si te fijas tienes instrucciones como fld1, fldz.

No se si te refieres a eso.

Un saludo.

Edito:

Si tienes 0.25 en el registro, 0x3e800000, i quieres que tenga el valor de 0.75, puedes cargarlo como te dijo con fld o sumarle con fadd.

Código
  1. pushq $0x3f000000 ; 0.50
  2. fadd (%rsp)
  3. fst (%rsp)

Ahora tendrias 0x3f400000, 0.75 cargado en la pila.

Tambien con fld.

Código
  1. fldz   ; registro a zero
  2. pushq $0x3f400000
  3. fld (%rsp)

Ya tendrias 0.75 cargado.


« Última modificación: 1 Diciembre 2013, 21:26 pm por cpu2 » En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #2 en: 1 Diciembre 2013, 22:04 pm »

Gracias por responder, me ha servido tu explicación de fldz para poner el registro a zero.

Ahora lo que he conseguido es nopear la instrucción fadd y he hecho lo siguiente:

mov [esi+34],3F800000

Con eso, establezco el valor de la variable a 1 (que también me interesa hacerlo).

Ahora solo quiero aprender como funcionan los números decimales en ASM. No entiendo porque 1 = 3F800000 y el 2 = 40000000

Hay alguna tabla que me permita calcular el valor hexadecimal de un número decimal (float)?
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
cpu2


Desconectado Desconectado

Mensajes: 1.000


Ver Perfil
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #3 en: 1 Diciembre 2013, 22:35 pm »

Gracias por responder, me ha servido tu explicación de fldz para poner el registro a zero.

Ahora lo que he conseguido es nopear la instrucción fadd y he hecho lo siguiente:

mov [esi+34],3F800000

Con eso, establezco el valor de la variable a 1 (que también me interesa hacerlo).

De nada, pero que quieres hacer? No es mejor utilizar fld1? para que utilizas la pila.

Utiliza los registros st, no la pila, estara mucho mejor, si me dices que estas haciendo, te dejo un ejemplo.

Ahora solo quiero aprender como funcionan los números decimales en ASM. No entiendo porque 1 = 3F800000 y el 2 = 40000000

Hay alguna tabla que me permita calcular el valor hexadecimal de un número decimal (float)?

En alguna parte lei la explicacion de todo esto, pero ya no tengo el documento....

Pero de momento puedes ayudarte con un conversor de numeros decimales a hex.

Un saludo.

P.D: Haz lo que pretendas a tu manera, y yo intentare mejorarlo, si quieres.

En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #4 en: 1 Diciembre 2013, 22:47 pm »

Estoy haciendo trainers para un videojuego (cheats, trucos, etc), utilizo CheatEngine + inyección de codigo.

La variable que pretendo modificar es de tipo Float (hay otras Double, pero es casi lo mismo). El código original resta 0.25 en cada ejecición y yo quiero que se almacene el valor 100 en lugar de restar, es decir:

A = A - 0.25 (éste el el código original)

Y lo que quiero hacer yo es:

A = A - 0.25
A = 100 (Añadir ésta línea para que mi variable tenga el valor de 100 todo el rato)
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
cpu2


Desconectado Desconectado

Mensajes: 1.000


Ver Perfil
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #5 en: 1 Diciembre 2013, 23:02 pm »

Vale, ahora entiendo porque utilizas la pila, pensaba que era para hacer algun tipo de calculo matematico, por eso te dije los de los registros.

Porque es mejor hacer esto:

Código
  1. fld1

Que no esto:

Código
  1. movl 0x3f800000, 34(%esi)
  2. fld 34(%esi)

Pero para lo que pretendes creo que bastaria moviendo o sumando con fadd 0x42c80000 100.0, a la variable, si tienes alguna duda ya sabes.

Un saludo.
« Última modificación: 1 Diciembre 2013, 23:04 pm por cpu2 » En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #6 en: 1 Diciembre 2013, 23:04 pm »

Duda ninguna, me lo has explicado todo perfecto. Solo falta entender como coño funcionan los numeros decimales en asm (hexadecimal), por mas que lo smiro, no les veo ninguna lógica o relación xD

Los numeros enteros y los negativos si que los entendí, pero los decimales..... es dificil ver que 0x42c80000 es 100 xD


edit, me ha ayudado mucho éste anexo: http://es.wikipedia.org/wiki/Anexo:Listados_de_instrucciones_x86
« Última modificación: 1 Diciembre 2013, 23:16 pm por ||MadAntrax|| » En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
cpu2


Desconectado Desconectado

Mensajes: 1.000


Ver Perfil
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #7 en: 1 Diciembre 2013, 23:18 pm »

El estandar es el IEEE 754, pero ya no tengo la documentacion. Por cierto, aplicaste lo que te dije al trainer y funciona?

Un saludo.

Edito:

Los manuales de intel estan mejor que la wikipedia xD.
En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #8 en: 1 Diciembre 2013, 23:20 pm »

El estandar es el IEEE 754, pero ya no tengo la documentacion. Por cierto, aplicaste lo que te dije al trainer y funciona?

Un saludo.

Lo he puesto a mi manera:

Código
  1. fstp dword ptr [esi+34]
  2. mov [esi+34],42C80000
  3. fnstsw ax

Así, al ejecutar la instrucción, la variable esi+34 siempre tendrá valor 100.0

 ;-)
« Última modificación: 1 Diciembre 2013, 23:23 pm por ||MadAntrax|| » En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
cpu2


Desconectado Desconectado

Mensajes: 1.000


Ver Perfil
Re: Ayuda con fadd qword ptr [xxxxxx]
« Respuesta #9 en: 1 Diciembre 2013, 23:47 pm »

Bien, copias el valor del registro st(0) a la pila, y luego dejas st(0) a su valor anterior, pero no entiendo el mov, porque mueves el valor del registro st(0) y luego reescribes el valor de la pila con el mov?

No es mejor hacer el mov directamente.

Y sobre fnstsw, luego comparas el valor para saber como esta el estado?

Un saludo.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
XxRekcahlExX 6 8,976 Último mensaje 24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
asociar con los nuevos Xavi E0:91:53:xxxxxx
Wireless en Linux
vespertine 3 5,277 Último mensaje 19 Diciembre 2010, 01:16 am
por vespertine
Auditoria de redes FTE-XXXX Y ORANGE-XXXXXX
Wireless en Linux
albertone93 3 14,459 Último mensaje 12 Febrero 2012, 17:50 pm
por HCK.
RouterOS v6.2 Final y las nuevas redes Mikrotik-XXXXXX
Hacking Wireless
P4nd3m0n1um 0 5,238 Último mensaje 5 Agosto 2013, 04:40 am
por P4nd3m0n1um
Redes TELECABLE-XXXXXX
Hacking Wireless
magarcan 0 2,951 Último mensaje 18 Agosto 2014, 10:15 am
por magarcan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines