elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Source] IsMutexRunning... sencilla función para evitar multiples instancias!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Source] IsMutexRunning... sencilla función para evitar multiples instancias!!  (Leído 3,542 veces)
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
[Source] IsMutexRunning... sencilla función para evitar multiples instancias!!
« en: 19 Mayo 2007, 17:33 pm »

Aqui vuelve el pesao de MadAntrax con otro de sus códigos...

Esta vez sirve para controlar que nuestra aplicación no sea ejecutada 2 veces en un mismo equipo. Algunos pensareis que eso ya se puede hacer con

Código
  1. If App.PrevInstance = True Then End

pero eso no es cierto... si nuestra aplicación se copia en System32 como: programa1.exe y programa2.exe... el usuario podrá ejecutar el programa1.exe y el programa2.exe simultáneamente! Eso puede suponer un problema en el caso de estar programando un troyano o un keylogger (donde lo importante es solo tener una instancia de nuestro malware a la vez).

Si no recuerdo mal, el troyano Bifrost usa esta función para controlar que solo un server.exe esté ejecutándose a la vez en un mismo sistema, y si la memoria no me falla este Mutex se puede personalizar en el EditServer. Bien, como creo yo una función similar en VB, así de simple:

Module1.bas
Código
  1. 'Estas sin las API's necesarias para crear y controlar el Mutex
  2. Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
  3. Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
  4. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  5.  
  6. 'Variable Global que almacena el Handle de nuestro Mutex
  7. Private hMutex As Long
  8.  
  9. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10. ' IsMutexRunning Parametros:
  11. '   MutexStr = String
  12. '       Cadena de texto única que usaremos para controlar nuestro Mutex
  13. '
  14. '   Valor de retorno = Boolean
  15. '       Devuelve TRUE si existe el Mutex
  16. '       Devuleve FALSE si no encuentra el Mutex
  17. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  18.  
  19. Public Function IsMutexRunning(ByVal MutexStr As String) As Boolean
  20.    hMutex = CreateMutex(0&, 0&, MutexStr)              'Creamos nuestro Mutex único
  21.    If hMutex = 0 Then                                  'Si el Handle es 0 es que algo no va bien :S
  22.        MsgBox "Ha ocurrido un error al intentar crear el Mutex. Es imposible controlar las instancias de este proceso", vbCritical + vbOKOnly, "CreateMutex Error"
  23.        IsMutexRunning = False
  24.    Else
  25.        If WaitForSingleObject(hMutex, 0&) = &H0 Then   'Comprobamos si ya existe ese Handle
  26.            IsMutexRunning = False                      'Si no existe, devolvemos FALSE
  27.        Else
  28.            MsgBox "Solo se permite una instancia simultanea de este proceso", vbOKOnly, "CreateMutex"
  29.            CloseHandle hMutex                          'Si existe, cerramos el nuevo Handle
  30.            IsMutexRunning = True                       'Y devolvemos TRUE
  31.        End If
  32.    End If
  33. End Function

y el el Form1.frm...
Código
  1. Private Sub Form_Load()
  2.    'Evitar usar un Mutex superior a 256 carácteres
  3.    'Recomiendo usar un Mutex poco común, asi evitamos problemas...
  4.    If IsMutexRunning("MadAntrax_Mutex[73@]") = True Then End
  5. End Sub
  6.  

Así de simple!! os dejo un proyecto de ejemplo 100% funcional, la descarga esta habilitada solo a usuarios registrados!!

Saludos!! ;D


« Última modificación: 30 Junio 2007, 15:15 pm por ||MadAntrax|| » En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: [Source] IsMutexRunning... sencilla función para evitar multiples instancias
« Respuesta #1 en: 19 Mayo 2007, 18:38 pm »

Citar
Aqui vuelve el pesao de MadAntrax con otro de sus códigos...

Ya te digo...  :¬¬ :¬¬

Es broma  ;D muy weno este codigo, y todas tus aportaciones, gracias ;)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOURCE] Letras3D7913 Funcion que crea letras 3D Flasheras
Programación Visual Basic
79137913 1 3,349 Último mensaje 26 Mayo 2011, 02:06 am
por Edu
Instancias múltiples de un programa.
Windows
Psyke1 4 4,004 Último mensaje 18 Enero 2013, 09:35 am
por x64core
Sencilla calculadora con reproductor de musica python (Source)
Scripting
-Mc_Raaka- 0 2,265 Último mensaje 5 Agosto 2013, 09:52 am
por -Mc_Raaka-
¿Hay alguna funcion para evitar que un archivo se cierre?
Programación General
scott_ 7 4,216 Último mensaje 10 Abril 2015, 05:04 am
por Eleкtro
Multiples instancias de una estructura
Programación C/C++
huchoko 2 1,698 Último mensaje 23 Octubre 2018, 04:28 am
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines