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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Ayuda con la Pila (Stack)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con la Pila (Stack)  (Leído 4,683 veces)
isidora

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Ayuda con la Pila (Stack)
« en: 30 Noviembre 2011, 00:56 am »

Hola :$

Primero que nada creo que este tema debería ir en el foro de Ingeniería Inversa, pero me referiré más a ASM. Estoy utilizando CheatEngine como herramienta para hacker algunos juegos, me he topado con una memoria que utilizan una gran variedad de juegos que se llama “Unreal Engine” donde la mayoría de los valores se almacena en la pila, por ejemplo esta es una típica dirección que accede a la vida del personaje:

Código:
mov eax,[esp+08]
mov ecx,[eax] < - - -[dirección que almacena la vida y muchos valore más]
mov edx,[esp+04]   

En el caso que inyecte esta dirección o la cambie, por ejemplo, darle 100 de vida al personaje: 

Código:
mov [eax], 64h < - - -[Al realizar esto lo único que conseguiré es que el juego arroje error]

En CheatEngine existe una herramienta que permite ver la pila, se ve algo asi:



Pero me preguntaba cómo lograr encontrar la dirección que verdaderamente accede  al valor que entra en la pila y luego poder inyectar un poco de código.
Les agradecería enormemente cualquier información sobre la pila y su comportamiento en tiempo de ejecución.
-De antemano Gracias!


En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Ayuda con la Pila (Stack)
« Respuesta #1 en: 30 Noviembre 2011, 04:25 am »

Creo que esto debería ir en Ingeniería inversa, en cuanto a tu error, que error exactamente te marca? podrías destildar el bypass exception en OllyDBG para ver que error te aparece, yo creo que puede ser que el nemónico que insertas junto con sus operandos son más grande que por lo que se nopean las instrucciones siguientes (por causa de falta de espacio). Para determinar exactamente el punto en donde se toma los valores, ya localizado el valor con CE se debe atachear el programa y luego de atacharlo ir a tal dirección y colocar un Hardware Breakpoint ya que este no relentiza el juego mientras se está puesto, si gustas puedes probar con un Memory breakpoint, realizas una operación con la vida, ej perder o ganar y se detendrá en una instrucción en donde utilice el valor de vida, lo más probable es que haya una instrucción SUB si perdimos vida o una ADD si esque ganamos, como solución se puede invertir el nemónico

PD: recuerda que el hardwarebreakpoint se detiene una instrucción a continuación
por lo que si tienes:
sub [eax],10
xor ebx,ebx

y se detiene en xor ebx,ebx por hardware breakpoint la instrucción a modificar es sub [eax],10

Saludos


En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
isidora

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda con la Pila (Stack)
« Respuesta #2 en: 30 Noviembre 2011, 22:15 pm »

Gracias por tu respuesta HUNDER, exactamente no es un error, me refería a que el juego se cierra inmediatamente. Te agradecería enormemente una explicación acerca de cómo realizar un Hardware Breakpoint en OllyDBG, ya que no tengo mucha experiencia con él.

Saludos!
En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: Ayuda con la Pila (Stack)
« Respuesta #3 en: 30 Noviembre 2011, 22:28 pm »

el problema es que en ollydbg el game si va a parar y si es ONLINE lo más probables es que te bote a patadas XD.

de todas maneras respondiendo a tu pregunta aquí encuentras un buen manual para ollydbg

http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/

EL CE también tiene esa misma opción (o casi la misma), en la address encontrada, una vez puesta en el listado del Cheat Table, haces click derecho "find out this address access" (o algo así XD), y te saldrá el listado de todas las address que acceden a ella.


HUNDER? xD, y cómo dice HUNDER el tamaño de esas instrucciónes es más grande, de la que estás sobreescribiendo, por ende pisa las instrucciones de abajo, lo que hace el CE es avisarte si deseas NOPearlos, y al hacer eso estás quitandole una instrucción al programa, la respuesta de es la esperada y el programa crashea (posiblemente) xD

Nox.
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda con la Pila (Stack)
« Respuesta #4 en: 30 Noviembre 2011, 22:36 pm »

Citar
realizar un Hardware Breakpoint en OllyDBG
brevemente lo que hace es parar el programa en el lugar o instruccion indicada, podes crear uno posicionando el foco
sobre el la instruccion donde quieras que pare el programa  y presionando F2
En línea

isidora

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda con la Pila (Stack)
« Respuesta #5 en: 30 Noviembre 2011, 23:08 pm »

Hola Иōҳ

El juego no es Online, si no que utiliza una memoria complicada (Unreal Engine algo así como la protección Xlive, pero no actúa como una protección que a la hora de Debugear la detecta y cierra el programa, Unreal Engine trabaja introduciendo los valores a la pila)

Algo así es lo que yo realizo: Una vez que tengo el valor, por ejemplo 100 tipo 4Bytes y con CheatEngine le doy con el secundario  y presiono “find out this address Access” encuentro la dirección que accede a ese valor sin ningún problema, lo que ocurre luego es que esa dirección que encuentro,  los valores que están trabajando el ella (el valor de 100 que mencione y una serie de valores más) se almacenas en la pila :/, y no tengo idea como lograr saber esos valores y poder encontrar la dirección que accede a mi valor (100).

brevemente lo que hace es parar el programa en el lugar o instruccion indicada, podes crear uno posicionando el foco
sobre el la instruccion donde quieras que pare el programa  y presionando F2

RHL, muchas gracias sé que me ayudara.
En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: Ayuda con la Pila (Stack)
« Respuesta #6 en: 3 Diciembre 2011, 03:33 am »

Si no tienen ningún tipo de comprobación de integridad, puedes hacer sin ningún problema un codecave justo despues del mov eax,[esp+08], haces un jmp, hacía al codecave, puedes usar un MSGBOX para "imprimir" el valor del que contenga EAX. Por si lo necesitas, o toquetear el valor de EAX, cómo se te venga en gana :P!, teniendo en cuenta que si no sabes lo que haces puedes hacer que el juego te bote a patadas!


en mi web tengo un escrito sobre CodeCave:

http://www.noxsoft.net/2011/11/codecave-in-assembly/



Podrías enfocarte en que dirección está la instrucción, y no tanto en que dirección de la pila está el valor que estás buscando (solo una sugerencia).

Nox.




« Última modificación: 3 Diciembre 2011, 03:38 am por Иōҳ » En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con la clase Stack T_T
Java
.Maku. 4 4,630 Último mensaje 11 Mayo 2009, 02:01 am
por AlbertoBSD
Implementar Stack Trace (Walk through stack)
ASM
kub0x 5 2,653 Último mensaje 16 Marzo 2014, 19:21 pm
por Arkangel_0x7C5
Duda con la pila (stack)
ASM
exploiterstack 5 3,372 Último mensaje 29 Mayo 2015, 15:15 pm
por cpu2
Problema con Pila (Stack), Hilos (Thread) y Lista números (Array)
Java
S_Code 1 1,816 Último mensaje 27 Mayo 2016, 12:19 pm
por S_Code
Respecto a la pila o memoria estatica..(o stack)
Programación C/C++
digimikeh 2 1,181 Último mensaje 4 Mayo 2019, 05:05 am
por digimikeh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines