Autor
|
Tema: Problema con PUSH en Ollydbg (Leído 3,904 veces)
|
Caster
|
Buenas a todos, estoy leyendo unos tutoriales de Ricardo Narvaja del ollydbg, no se en que lección estoy porque vienen todas juntas, pero estoy leyendo sobre las instrucciones del stack, en concreto sobre la instrucción PUSH, que según entendi sirve para añadir valores al stack. Lo estoy probando con un Crackme que venia con los propios tutoriales y al meterlo en el Ollydbg la primera linea del desemsamblado es un PUSH 0, si me situo en esa línea y la ejecuto, en el stack queda de primero una direccion con el valor 00000000, hasta ahí todo bien, después explica la diferencia entre poner PUSH numerox que poner PUSH [numerox], si pongo PUSH 401008 en el stack queda de primero una direccion con el valor 401008, si busco en el dump la direccion 401008 contiene los valores CA 20 40 00, los que quiero introducir en el stack con la instrucción PUSH [401008] pero cuando la intento introducir en el desensamblador me pone: "Please specify operand size" y no entiendo que quiere decir eso, me fije tambien que en la foto que trae el tutorial en vez de PUSH [401008] pone PUSH DWORD PTR DS: [401008], si lo introduzco de esta manera si que funciona, pero en el tutorial explica que hay que introducir PUSH [401008] únicamente, quería saber si es problema de que algo estoy haciendo mal o el tutorial viene mal explicado.
Saludos
|
|
|
En línea
|
|
|
|
.:UND3R:.
|
Hola, al parecer el tutorial viene mal explicado ya que como vez la instrucción: PUSH DWORD PTR DS: [401008] Especifica su tamaño, de todas maneras casi el 99% de los casos el tamaño que debes usar es DWORD ya que la pila tiene este tamaño predeterminado.
El DWORD (doble palabra) como comenté, es la forma para que el procesador sepa cuantos datos debe sacar dentro de la dirección 401008, a diferencia de cuando empujas un address o valor directamente, este tiene un tamaño DWORD, saludos y suerte
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
Caster
|
En el tutorial viene explicado más abajo, no me fije (mea culpa), que el Olly traduce la instruccion PUSH [401008] por PUSH DWORD PTR DS: [401008] y que el DWORD le indica que debe seleccionar 4 bytes de la dirección de memoria, pero que el usuario debe introducir únicamente PUSH [401008], siendo PUSH DWORD PTR DS: [401008] la forma correcta, ¿que significa PTR DS?
Saludos y gracias.
|
|
|
En línea
|
|
|
|
.:UND3R:.
|
El operador PTR permite re-definir el tamaño en bytes de un operando
saludos
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
|
.:UND3R:.
|
Si mal no me equivoco es la especificación del segmento en donde se encuentran la cantidad de bytes a extraer, DS = Data section o sección de datos (generalmente .DATA). Aunque si se sacaran datos desde la sección CS debería ser PTR CS, pro no sé si esto es aplicado en modo protegido. PD: Eres muy curioso y eso es muy bueno
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
Caster
|
Muchas gracias por las aclaraciones, ya me ha quedado claro.
Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema en Ollydbg
« 1 2 »
Ingeniería Inversa
|
AndyArmin
|
17
|
10,706
|
9 Marzo 2009, 12:23 pm
por paciente!!
|
|
|
Ollydbg, problema dll.
Ingeniería Inversa
|
Eaa
|
4
|
4,233
|
3 Septiembre 2008, 22:32 pm
por Eaa
|
|
|
Problema con OllyDbg
Ingeniería Inversa
|
DarkStreaM
|
1
|
3,096
|
20 Febrero 2009, 19:23 pm
por karmany
|
|
|
Problema con Ollydbg
Ingeniería Inversa
|
bbeettoo
|
8
|
6,026
|
24 Febrero 2013, 00:52 am
por apuromafo CLS
|
|
|
OllyDBG problema
Ingeniería Inversa
|
Error 404:
|
4
|
3,086
|
25 Febrero 2013, 03:58 am
por MCKSys Argentina
|
|