• Fuentes

 #482765  por Scorpio
 12 Ene 2016, 08:18
Una simple función para ver si estamos en un Sandbox (El de Avast por ejemplo. ).
sAntiEmulation(1000)

Func sAntiEmulation($sDelay)
    Local $sFirstTick = DllCall("kernel32.dll", "dword", "GetTickCount")
    Sleep($sDelay)
    Local $sSecondTick = DllCall("kernel32.dll", "dword", "GetTickCount")
    
    If $sSecondTick[0] - $sFirstTick[0] = $sDelay Then
        Return False
    Else
        Return True
        ;Exit
    EndIf
EndFunc
//Regards.
 #482770  por comand
 12 Ene 2016, 10:21
¡Gracias hermano!
 #482771  por top10
 12 Ene 2016, 10:25
No sabia que eso pasaba el avast.....

No se si se puede o no pero portando a autoit la funcion delay de vb6 se podria hacer sin usar ninguna api,me refiero a esta:
Public Sub SleepFor(ByVal Seconds As Double)
  Dim EndTime As Date
  EndTime = DateAdd("s", Seconds, Now)
  Do
    DoEvents
  Loop Until Now >= EndTime

End Sub
Saludos
 #482774  por Blau
 12 Ene 2016, 12:10
Scorpio escribió:Una simple función para ver si estamos en un Sandbox (El de Avast por ejemplo. ).
sAntiEmulation(1000)

Func sAntiEmulation($sDelay)
    Local $sFirstTick = DllCall("kernel32.dll", "dword", "GetTickCount")
    Sleep($sDelay)
    Local $sSecondTick = DllCall("kernel32.dll", "dword", "GetTickCount")
    
    If $sSecondTick[0] - $sFirstTick[0] = $sDelay Then
        Return False
    Else
        Return True
        ;Exit
    EndIf
EndFunc
//Regards.
Se puede acortar la función:
Func sAntiEmulation($sDelay)
    Local $sFirstTick = DllCall("kernel32.dll", "dword", "GetTickCount")
    Sleep($sDelay)
    Local $sSecondTick = DllCall("kernel32.dll", "dword", "GetTickCount")
    Return ($sSecondTick[0] - $sFirstTick[0] <> $sDelay)
EndFunc
@top10
Depende de que APIs use internamente AutoIt para el manejo de tiempo/fechas. Normalmente se usa GetTickCount por su 'dificultad' al falsear el resultado.
 #482785  por Pink
 12 Ene 2016, 15:58
Gracias por la funcion. una pregunta (curiosidad) porque usas $s en todas tus variables?

Saludos
 #482792  por crack81
 12 Ene 2016, 19:02
Esta linda la funcion no la he probado pero es curioso como detecta si esta dentro del sandbox.
Para lo que no sepan o no manejen autoit(yo no )

Explicacion del codigo :
  • 1:Obtengo la cantidad de milisegundos que han trascurrido desde que arranco el sistema y guardo el valor en la variable $sFirstTick
    2: Mando a llamar a la funcion sleep() y duermo el programa en este caso por 1000 milisegundos o sea 1 segundo
    3: vuelvo a obtener la cantidad de milisegundos que han trascurrido pero en este caso el valor sera mayor ya que ha trascurrido mas tiempo y lo guardo en la variable $sSecondTick
    4:En el if, resto la variable $sSecondTick menos la variable $sFirstTick y si su resultado es igual al de la variable $sDelay que en este caso son 1000 milisegundoes , entonces quiere decir que no se encuentra dentro del sandbox , en caso contrario si la resta de las dos variable no es igual a la variable $sDelay nos da por entendio que ha habido algun proceso que ha intervenido en el desarrollo normal del programa o funcion y por ende nos encontramos dentro del algun sandbox.
 #482801  por Scorpio
 12 Ene 2016, 23:47
crack81 escribió:Esta linda la funcion no la he probado pero es curioso como detecta si esta dentro del sandbox.
Para lo que no sepan o no manejen autoit(yo no )

Explicacion del codigo :
  • 1:Obtengo la cantidad de milisegundos que han trascurrido desde que arranco el sistema y guardo el valor en la variable $sFirstTick
    2: Mando a llamar a la funcion sleep() y duermo el programa en este caso por 1000 milisegundos o sea 1 segundo
    3: vuelvo a obtener la cantidad de milisegundos que han trascurrido pero en este caso el valor sera mayor ya que ha trascurrido mas tiempo y lo guardo en la variable $sSecondTick
    4:En el if, resto la variable $sSecondTick menos la variable $sFirstTick y si su resultado es igual al de la variable $sDelay que en este caso son 1000 milisegundoes , entonces quiere decir que no se encuentra dentro del sandbox , en caso contrario si la resta de las dos variable no es igual a la variable $sDelay nos da por entendio que ha habido algun proceso que ha intervenido en el desarrollo normal del programa o funcion y por ende nos encontramos dentro del algun sandbox.
Muy bien explicado, Blau me explico que la SandBox es "La Camara del Tiempo" por así decirlo, pasa mas lento.
Pink escribió:Gracias por la funcion. una pregunta (curiosidad) porque usas $s en todas tus variables?

Saludos
Creo que me lo pegó M3.

//Regards.
 #482841  por Pink
 13 Ene 2016, 19:38
Scorpio escribió:
crack81 escribió:Esta linda la funcion no la he probado pero es curioso como detecta si esta dentro del sandbox.
Para lo que no sepan o no manejen autoit(yo no )

Explicacion del codigo :
  • 1:Obtengo la cantidad de milisegundos que han trascurrido desde que arranco el sistema y guardo el valor en la variable $sFirstTick
    2: Mando a llamar a la funcion sleep() y duermo el programa en este caso por 1000 milisegundos o sea 1 segundo
    3: vuelvo a obtener la cantidad de milisegundos que han trascurrido pero en este caso el valor sera mayor ya que ha trascurrido mas tiempo y lo guardo en la variable $sSecondTick
    4:En el if, resto la variable $sSecondTick menos la variable $sFirstTick y si su resultado es igual al de la variable $sDelay que en este caso son 1000 milisegundoes , entonces quiere decir que no se encuentra dentro del sandbox , en caso contrario si la resta de las dos variable no es igual a la variable $sDelay nos da por entendio que ha habido algun proceso que ha intervenido en el desarrollo normal del programa o funcion y por ende nos encontramos dentro del algun sandbox.
Muy bien explicado, Blau me explico que la SandBox es "La Camara del Tiempo" por así decirlo, pasa mas lento.
Pink escribió:Gracias por la funcion. una pregunta (curiosidad) porque usas $s en todas tus variables?

Saludos
Creo que me lo pegó M3.

//Regards.
deberías cambiar ese habito por uno mas ordenado. tal vez usando notación húngara o algo similar.
Saludos