Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: .:UND3R:. en 29 Junio 2011, 21:40 pm



Título: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 29 Junio 2011, 21:40 pm
Bueno en el tutorial ricardo narvaja explica algo más o menos así:

Citar
Vemos alli que antes de correr el programa, el stack esta en mi maquina en 12ffc4, quiere decir que
si cuando llega al verdadero OEP el stack esta en la misma posicion o sea en 12FFc4, la primera
sentencia que podria ser PUSH EBP se escribira en 12ffc0 justo arriba de esta, asi que busquemos
12FFc0 en el dump y pongamosle un HARDWARE BPX ON WRITE a ver si nos da resultado,
puede que si puede que no, pero el razonamiento es logico.

Por que se escribe justo arriba de la misma? si se supone que el primer comando sería PUSH EBP y en la dirección 12FFc4 si alguien lo explica bien se los agradecería saludos


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: apuromafo CLS en 29 Junio 2011, 21:52 pm
push ebp, escribe en stack..que direccion? mira el stack , en la maquina de ricardo deberia ser  12FFc4

cuando se detiene en el oep, y no esta en la misma direccion donde ejecutan todos los programas, hay estolen, es para eso..y si coloca el bp en access en la direccion, significa que posiblemente encontrara la primera escritura en ese lugar..

es eso

verifica como se llaman las ventanas en:
http://foro.elhacker.net/ingenieria_inversa/taller_de_cracking_desde_cero_actualizado_27julio2008-t180886.0.html



Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 29 Junio 2011, 22:09 pm
Sigo sin entender osea ricardo cuando llega al falso oep (stolen byte) le marca que está en 12FFc4 (posición de la pila normal) pero si se ve detenidamente se nota que hay stolen byte eso lo entiendo claramente pero mi pregunta es por que busca en 12FFc0 deciendo que ahí se debería ejecutar un push ebp

Gracias por la paciencia


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: _Enko en 29 Junio 2011, 23:52 pm
dejame adivinar... mh...

despues de que dice que el stolen byte es "push ebp"...

la siguiente instruccion cual es? "mov ebp, esp"?


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 30 Junio 2011, 00:04 am
Así es efectivamente pero no logro entender lo que comenté anteriormente


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 30 Junio 2011, 00:12 am
No entiendo lo de la pila osea si parte en 12FFc4 y cuando encuentro el falso oep está en 12FFc4 quiere decir que anteriormente ya realizó operaciones, eso me queda claro pero el problema surge ahora que por qué empieza a buscar en 12FFc0 siendo que son muchos stolen bytes no entiendo el por qué de buscar ahí


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: _Enko en 30 Junio 2011, 00:15 am
porque es la entrada normal a un procedimiento
Citar
push ebp
mov ebp, esp
Los enpaquetadores convierten la ejecutable en una rutina para poder ejecutarla.
La entrada a cualquier procedimiento comienza normalmente con
Código:
push ebp
mov ebp, esp
sub esp, SIZEOF(LOCAL VAR)
por eso se puede adivinar cual es la intruccion original en este caso y supongo en muchos otros.


Porque busca alli? Ni idea, en el caso. Pero la idea de conseguir saber cuales son los stolen bytes pasa por encontrar la entrada original de la ejecutable.
Segun el compilador, suelen hacerlo siempre de la misma manera.

Por ejemplo, en este caso, calculo que el programa esta hecho con c++.


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 30 Junio 2011, 02:54 am
Entiendo lo que comentaste pero lo que no entiendo es por que se intenta buscar en 12FFC0 y no más atrás de la pila y no entiendo eso por que los stolen byte son más que uno si fuera uno entendería pero son muchos, Gracias por la paciencia :D


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: _Enko en 30 Junio 2011, 05:35 am
no me he puesto a desempaquetar programas,  asi que ni idea.

lo unico que se me ocurre es que push ebp, restaria 4 al stack, por eso el stack original comienzaria en -4 despues del push (en esa direccion se encuentra el ret al kernel)


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 30 Junio 2011, 22:33 pm
Pero no se supone que el inicio está justo antes de ejecutar el push ebp y no después que se ejecutó?

osea el programa parte así según mi entender



Push ebp
mov ebp, esp



                                                                                   12FFC4


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: .:UND3R:. en 30 Junio 2011, 23:51 pm
Todo aclarado, explico por si alguien llega a tener la misma duda:

Si abrimos un programa sin empaquetar y nos fijamos en la pila, veremos el siguiente valor 12FFC4

Ahora si abrimos un programa empacado lo más probable es que deba tener la pila más aumentada por así decirlo debido a que ya ha ejecutado operaciones anteriormente pero en este caso de PESPIN permanece 12FFC4 como la primera dirección en la pila, pero el problema surge que si nos fijamos en el stack debajo de esta hay operaciones realizadas de todas formas por lo que podemos apreciar stolen bites:



Por lo que la idea es encontrar el primer stolen bite con esta analogía:
cuando nos encontramos frente a la primera operación esta debería ser:
Citar
PUSH EBP
(por lo general)
por lo que habría que poner un Hadware bp en 12FFC0 y ¿por qué no en 12FFC4?

Debido a que cuando se utiliza un Hadware bp este se detiene en la siguiente operación además en ese instante el push ebp ya estará ejecutado por lo que el principio de la pila apuntará a 12FFC0

No sé si esté bien esta analogía pero así lo logro entender


Título: Re: No entiendo la analogía de los STOLEN BYTE de PESPIN
Publicado por: apuromafo CLS en 1 Julio 2011, 00:38 am
pensemoslo de otra forma entonces

el programa normal es

1
2
3
4
5

el programa con stolen estaras en
4
5
6

luego como se donde comenzo?, pues un bp en acces en 1 o en 2

pero como llego a eso?, normalmente todos comienzan por push ebp, o algun push o similar, luego hay 4 menos y por ahi intentar

en upx, el pushad guarda los registros, el popad los restaura, por eso el metodo sirve, pero si hiciera pushad y nunca popad, no serviria el metodo

el tema delicado ahi es que el valor de comienzo, nisiquiera se hubiera escrito, el segundo si..es solo eso