+ Responder tema
Resultados 1 al 1 de 1

Tema: Inyeccion de codigo en memoria

  1. #1
    Recien Nacido
    Fecha de ingreso
    02 feb, 09
    Mensajes
    11
    Gracias
    1
    Agradecido 12 veces en 3 Mensajes

    Predeterminado Inyeccion de codigo en memoria

    Buenas comunidad,
    les comparto un ejemplo de inyeccion de codigo en memoria de una aplicacion.

    NOTA 1:
    aplicando una practica de la revista HHZINE n5, la cual habla sobre inyección de código en la memoria de un programa.

    NOTA 2: adjunto un archivo de word en donde esta explicado todo el procedimiento, con analisis en ollydbg y el extraño error.

    ACLARACION 1:
    Las direcciones de memoria varian según la maquina en donde se ejecuten.

    ACLARACION 2:
    Al final comentare algo muy extraño en las direcciones de memoria.

    EN EL ARCHIVO DE WORD:
    Primero explicare el codigo de la aplicacion victima (escrito en c en devc++)
    Segundo explicare como se obtienen las direcciones de memoria utilizando ollydbg
    Tercero explicare el codigo de la aplicacion inyectora (escrito en c++ en devc++)

    Código victima (.c):

    #include <stdio.h>
    int A; //variable global
    main (){
    printf("Programa victima de una inyeccion. Por HySTD\n");
    printf("El objetivo es conseguir que muestre '1'\n");
    getchar();
    // asm en sistaxis intel no soportada por el dev c++
    /*__asm{
    lea edx, a
    mov eax, 0
    mov [edx], eax
    }*/
    //asm en sintaxis AT&T que es la que entiende el dev c++
    //obtenemos la direccion en memoria donde se encuentra la variable "A"
    __asm("leal _A, %edx");
    //movemos un valor 0 a el registro eax
    __asm("movl $0, %eax");
    //movemos el valor del registro eax (en este caso 0) dentro de la direccion de la variable "A"
    __asm("movl %eax, (%edx)");
    printf("%d\n", A);
    getchar();
    }


    codigo inyector (.cpp):

    /* programa inyector por javware*/
    #include <stdlib.h>
    #include <stdio.h>
    #include <windows.h>
    using namespace std;

    main()
    {
    int n=2; //variable con el valor a inyectar
    unsigned long escritos; //variable que muestra cuantos bytes que fueron escritos
    HWND victima; //manejador de ventana
    DWORD pid; //PID de la ventana victima
    HANDLE proceso; //el manejador de proceso
    //buscamos la ventana por titulo
    victima = FindWindow(NULL,"inyeccion");
    //si el manejador da 0 quiere decir que la ventana no se encontro
    if(victima==0)
    {
    cout<<"La ventana no esta abierta"<<endl;
    }
    //si el manejador da un resultado diferente de 0 la ventana se encontro
    else
    {
    cout<<"Ventana capturada"<<endl;
    //obtenemos el PID de la ventana y lo guardamos en "pid
    GetWindowThreadProcessId(victima,&pid); "
    //le damos permisos de lectura y escritura de memoria a el proceso
    proceso = OpenProcess(PROCESS_ALL_ACCESS,0,pid);
    //escribimos en el lugar de memoria que deseamos modificar
    WriteProcessMemory(proceso, (LPVOID)(0x4012EA), &n, 1, &leidos);
    printf("leidos: %d %p\n",leidos,&leidos);
    printf("n: %d %p\n",n,&n);
    CloseHandle(proceso);
    }
    system("pause");
    }

    Después de que tenemos esto, podemos correr nuestra aplicación victima, y después nuestra aplicación inyectora y si las direcciones de memoria han sido analizadas y escritas correctamente obtendremos nuestra inyección a un lugar especifico de memoria.
    Archivos adjuntados Archivos adjuntados

+ Responder tema

Visitantes encuentran esta página buscando por:

inyeccion de codigo c

inyectar codigo en memoria

como inyectar una memoria

inyeccion de codigo en c

inyectar codigo en memoria C

inyección de código en memoria

inyeccion para la memoria

inyección en memoria C++

inyectar codigo ollydbg

inyeccion en memoriainyección de código c codigos para inyectar una memoriacodigo para crear memoria en ollydbginyeccion de memoriainjeccion codigo ollydbginyectar en memoriadirecciones de memoria de una aplicacioninjecion de codiogorevista HHZINE n5inyeccion en memeriacomo inyectar a una memoria inyeccione de un programa en cinyeccion de codigo en memoria c çmemoria ollydbgcodigo en memoria

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes