Resultados 1 al 7 de 7

Tema: Problemilla con Olly

  1. #1 Problemilla con Olly 
    Iniciado
    Fecha de ingreso
    Sep 2009
    Mensajes
    9
    Descargas
    0
    Uploads
    0
    Estoy estudiando un programa el cual tiene una libreria y sobre ella estoy trabajando. El problema que tengo es saber como grabar una direccion que es dinamica. Por ejemplo, lo que quiero modificar es tal como esto:
    092B447C mov eax, LinRot5.092CBC74 (direccion) que no es lo mismo que
    092B447C mov eax, 092CBC74 (valor).
    Esta direccion cuando vuelva a arrancar el programa no sera la misma pero Olly me lo ha grabado como valor y no como direccion, entonces me gustaria saber como he de escribirlo o grabarlo. Se que si estuviese bien, tanto en el desamblado como en el dump apareceria subrayado, masked fixups creo que se llama.
    gracias y un saludo.
    Citar  
     

  2. #2  
    Avanzado
    Fecha de ingreso
    Oct 2010
    Mensajes
    377
    Descargas
    23
    Uploads
    0
    Por si te sirve de ayuda, la sintaxis para indicar en una instrucion MOV una dirrecion de memoria es esta MOV [MIDIRECCION] asi no se tomara como un valor.
    Bendo mi cuelpo, xicaz interezadaz mnanden priBado, no ravoz ni zorpesas.
    Citar  
     

  3. #3  
    Iniciado
    Fecha de ingreso
    Sep 2009
    Mensajes
    9
    Descargas
    0
    Uploads
    0
    No te entiendo muy bien, segun el ejemplo anterior lo que necesito es saber escribir
    092B447C mov eax, LinRot5.092CBC74 y no
    092B447C mov eax, [092CBC74] porque como todos sabemos no es lo mismo.
    Citar  
     

  4. #4  
    Avanzado
    Fecha de ingreso
    Oct 2010
    Mensajes
    377
    Descargas
    23
    Uploads
    0
    Lo q te estoy diciendo es que si quieres tomar el valor que se encuentra en la direccion 092CBC74 se suele escribir entre [], espero no tener que entrar en un debate enterno.
    Bendo mi cuelpo, xicaz interezadaz mnanden priBado, no ravoz ni zorpesas.
    Citar  
     

  5. #5  
    Moderador Global
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.568
    Descargas
    58
    Uploads
    0
    Si lo que quieres es obtener la dirección de memoria de un objeto (por ejemplo una función o un procedimiento) que se encuentra dentro de una librería dinámica, lo que debes es observar en qué punto se llama a GetModuleHandle() y GetProcAddress(). Esta última recibe el valor devuelto por la primera, y devuelve la dirección de memoria del objeto, que se llama en el código.

    Para localizarlo, deberás realizar una traza al código hasta dar con lo que buscas. Una vez localizado, si necesitas "exportar" esa dirección hacia otro sitio, habrá que insertar una instrucción del tipo PUSH EAX (pues en EAX es donde probablemente esté el valor devuelto por la función GetProcAddress), y posteriormente recuperarla en la sección del código con un POP EAX, o con una instrucción MOV EAX, [EBP-x], quedando finalmente en EAX la dirección cargada que buscas, lista para usar en donde desees.

    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

  6. #6  
    Iniciado
    Fecha de ingreso
    Sep 2009
    Mensajes
    9
    Descargas
    0
    Uploads
    0
    Os pongo una lineas del programa original para ver si así me explico mejor.
    093F4473 . 6A 15 PUSH 15
    093F4475 . 8D8D E0FEFFFF LEA ECX,DWORD PTR SS:[EBP-120]
    093F447B . 51 PUSH ECX
    093F447C . 68 74BC4009 PUSH LinRot5.0940BC74
    093F4481 . FF15 3C943F09 CALL DWORD PTR DS:[<&MSVCR80.strncmp>]
    093F4487 83C4 0C ADD ESP,0C
    093F448A 85C0 TEST EAX,EAX
    imaginemos que yo quiero copiar el push que esta antes de la funcion strncmp, quedaria
    093F4487 68 74BC4009 PUSH LinRot5.0940BC74
    ahora grabo y reinicio el programa quedando de la siguiente forma
    09284475 . 8D8D E0FEFFFF LEA ECX,DWORD PTR SS:[EBP-120]
    0928447B . 51 PUSH ECX
    0928447C . 68 74BC2909 PUSH LinRot5.0929BC74
    09284481 . FF15 3C942809 CALL DWORD PTR DS:[<&MSVCR80.strncmp>]
    09284487 68 74BC4009 PUSH 940BC74
    y vemos que el ultimo push no ha cogido la direccion que puse antes. Esta version de Olly es 1.09 y aunque el v2.01 me deja escribir Push Offset 0929BC74 el resultado es el mismo.
    un saludo.
    Citar  
     

  7. #7  
    Iniciado
    Fecha de ingreso
    Jul 2008
    Mensajes
    31
    Descargas
    3
    Uploads
    0
    Hola, elios48.

    ¿Sería posible saber qué programa es el que estás estudiando?

    Gracias, y un saludo.
    Citar  
     

Marcadores
Marcadores
Permisos de publicación
  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •