1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Detour Fuction

Discussão em 'Programação' iniciada por HeXel, 12 de Abril de 2009. (Respostas: 3; Visualizações: 833)

  1. HeXel

    HeXel Folding Member

    Alguem me podia ajudar a escrever uma Detour Function sem usar a microsoft detours 2.1 ?

    Este caso também não funciona para o que vou usar:
    Código:
     void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
    {
        BYTE *jmp = (BYTE*)malloc(len+5);
        DWORD dwBack;
        VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
        memcpy(jmp, src, len);    
        jmp += len;
        jmp[0] = 0xE9;
        *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
        src[0] = 0x50;
        src[1] = 0x58;
        src[2] = 0xE9;
        *(DWORD*)(&src[3]) = (DWORD)(dst - src) - 7;
        for (int i=7; i<len; i++)  src[i] = 0x90;
        VirtualProtect(src, len, dwBack, &dwBack);
        return (jmp-len);
    }
    Nem este caso:
    Código:
    void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
    {
        BYTE *jmp = (BYTE*)malloc(len+5);
        DWORD dwback;
    
        VirtualProtect(src, len, PAGE_READWRITE, &dwback);
    
        memcpy(jmp, src, len);    jmp += len;
        
        jmp[0] = 0xE9;
        *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
    
        src[0] = 0xE9;
        *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
    
        VirtualProtect(src, len, dwback, &dwback);
    
        return (jmp-len);
    }
    
    Obrigado !
     
    Última edição: 12 de Abril de 2009
  2. HeXel

    HeXel Folding Member

    O que eu queria era mesmo mudar os bytes

    por exemplo:

    Código:
        src[0] = 0x00;
        src[1] = 0x00;
        src[2] = 0x00;
        src[3] = 0x00;
        src[4] = 0x00;
        *(DWORD*)(&src[3]) = (DWORD)(dst - src) - 7;
        for (int i=7; i<len; i++)  src[i] = 0x90;
        VirtualProtect(src, len, dwBack, &dwBack);
        return (jmp-len);
    }
    Só que eu não percebo muito de assembly e não o sei fazer ...

    Algum expert em linha ?
     
  3. HeXel

    HeXel Folding Member

    Não levem a mal este bump, mas eu estou a precisar urgentemente da função
     
  4. HeXel

    HeXel Folding Member

    Desculpem lá fazer bump mas é que já passaram uns bons dias ...
     

Partilhar esta Página