quarta-feira, 20 de agosto de 2014

[C] Detectando e dando Bypass na SandBox do Avast

Detectar se o aplicativo esta sendo rodado pela SandBox do avast é algo bem simples , tão simples que poucas linhas de códigos são necessárias, usamos a função GetModuleHandle da lib windows.h e verificamos se a dll snxhk.dll foi carregada , se a função retorna algum valor diferente de NULL é porque o aplicativo esta rodando na sandbox.

Exemplos:

  • Detectando:
#include <windows.h>

int main(){
 printf( (GetModuleHandle("snxhk.dll") == NULL) ? "Not in sandbox\n" : "Sandbox on !\n");
}


executando:

  • Bypass:
Usando Operador ternário novamente, da pra fazer bypass com só uma linha de código =) :
#include <windows.h>

int main(){
 (GetModuleHandle("snxhk.dll") == NULL) ? 0 : exit(0);
 // Resto do prog.
}




5 comentários:

  1. muito show mano, sempre com bons codigo *-*

    ResponderExcluir
  2. Como e por que isso funciona? Me ensine. (GetModuleHandle("snxhk.dll") == NULL) ? 0 : exit(0); <-- zero dois pontos e interrogacao em C? Isso estah certo mesmo? Enfim, acho que to ficando velho, mas deixa isso pra lah. No aguardo da resposta.

    David Firmino aka f0x

    ResponderExcluir
    Respostas
    1. A função GetModuleHandle verifica se a dll foi carregada pelo processo: http://goo.gl/FcfVY0.
      Essa dll é carregada pela sandbox do avast, ai da pra identificar.
      A interrogação ai é operador ternário , da uma olhada: http://goo.gl/mGzMsf

      Excluir
    2. usrfiles.xpg.com.br/mstealing.pdf

      []'s

      Excluir