Página 1 de 1

[AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 08:18
por Scorpio
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.

Re: [AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 10:21
por comand
¡Gracias hermano!

Re: [AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 10:25
por top10
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

Re: [AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 12:10
por Blau
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.

Re: [AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 15:58
por Pink
Gracias por la funcion. una pregunta (curiosidad) porque usas $s en todas tus variables?

Saludos

Re: [AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 19:02
por crack81
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.

Re: [AutoIt]sAntiEmulation

Publicado: 12 Ene 2016, 23:47
por Scorpio
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.

Re: [AutoIt]sAntiEmulation

Publicado: 13 Ene 2016, 19:38
por Pink
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