Programas de broma

Iniciado por Meta, 22 Marzo 2018, 17:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Buenas:

No es malicioso ni la rosa. Me he informado bien por Internet. Es broma, peligrosos si infecta, se propaga mientras hace daño por donde pase. En este caso, al final que sigo con la broma, tiene que estar el ordenador en buen estado, tal como lo encontró al principio. Sin pérdidas de datos, sin robo de contraseñas de Web o lo que sea, sin cosas maliciosas. ;)

Ya pondré el programa final cuando lo acabe.

Para escapar, a lo mejor lo pongo en modo servicios para que no se den cuenta. Aquí leyendo un poco el tutorial haber como es.

Gracias por la información.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Eleкtro

#11
Cita de: Meta en 17 Abril 2018, 11:49 AMNo es malicioso ni la rosa. Me he informado bien por Internet. Es broma, peligrosos si infecta

Has manifestado la intención de suplantar la identidad de un proceso legítimo de confianza para los usuarios como es el cliente de Java, usar su mismo icono y la misma información de versión de archivo (aquello de "Anunciante") para camuflarte y parecer el proceso de Java, para volver tu proceso "indetectable" (entre comillas), vaya.

No dije que el código de tu programa fuese malicioso, dije que al hacer eso estarías rozando una delgada linea entre lo que se puede considerar una broma y lo que se puede considerar software malicioso. Por ese motivo y en mi humilde opinión no deberías hacer eso, piensalo detenidamente, será por la infinidad de otros iconos que puedes usar y las millones de ideas que se te pueden ocurrir para escribir la información de archivo de tu programa...

Saludos!








Serapis

Un programa es malicioso, desde el mismo momento en que hace algo que el usuario no ha aprobado...

...es malicioso, además, porque cuando empiece a hacer esas cosas, el usuario puede pensar que está infectado con un virus y debido a ello, puede entrarle prisas por formatear, o intentar cualquier tontería, lo que como mínimo hace malfastar su tiempo y en lo peor, puede perter el contenido completo del disco duro, si no tiene conocimientos suficientes...

Meta

#13
Buenas:

Parece ser que es una broma pesada. En cuanto al icono de Java, nombré eso pro nombrar, puede ser otro. Hay muchos iconos por internet. Hay que intentar una cosa que lo primero que se le ocurra, es no formatear así sin más.

Hay una broma que le llegó a un amigo, salió una barra de formateando disco duro y haciendo mucho ruido. Al final salió un mensaje en castellano que dijo:

CitarEs una broma.
A la próxima ten mucho cuidado con los archivos que ejectutes.

Mi broma continua cuando al final de repente, aparezca la famosa pantalla azul sobre error de Windows, un segundo o dos, para que no le de tiempo a reiniciar ya, como hacen muchos, al final dirá letra por letra.

CitarEs una broma.

Se quita la pantalla.

El ordenador del cliente tiene que estar intacto, como si no hubiera ocurrido nada, sano y salvo. Sin infecciones, sin modificaciones, sin huellas en el regedit, como el nombre el ejecutable que se queda guardado ahí, y sin ninguna otra majadería. el ejecutable debe desaparecer, sea desde el inico o en servivios, que es lo que estoy haciendo pruebas ahora mismo para conocerlo a fondo, nada de conectarse a internet, nada de robos de datos o información del usuario como saber que PC usa, aquí solo bromas, sin causar grandes molestias o sustos graves. Por ahora, no lo detecta ningún antivirus.

;)
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

**Aincrad**

No as intentado usar un rootkit ?

Rootkit Startup Method ( full hidden startup x32 x86 working ) vb.net  ;D

[youtube=640,360]https://www.youtube.com/watch?v=Vko4cdNCCT8[/youtube]





Meta

Cita de: **Aincrad** en 20 Abril 2018, 16:40 PM
No as intentado usar un rootkit ?

Rootkit Startup Method ( full hidden startup x32 x86 working ) vb.net  ;D

[youtube=640,360]https://www.youtube.com/watch?v=Vko4cdNCCT8[/youtube]



Sí.

Muchísimo.

Por ahora centrado en hacer el programa principal. A parte de eso, estaba aprendiendo también manejar servicios windows que es un rollo que no veas para lo que quiero.

Intentaré seguir la tónica de Visual Basic .net centrado a C#. Todavía no se desprenden del VB 6 ni loco.

La razón por la cual Microsoft descontinuó Visual Basic.

Gracias por el videazo. ;)
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Maurice_Lupin

Ya que no será malicioso puedes inyectar tu código en otro proceso que sea común... :D tiempo que no toco el formato PE.

Por ejemplo en vb
http://www.forosdelweb.com/f69/inyectar-exe-otro-exe-670787/

Veo que usas funciones de la API, bien podrías hacerlo en C/C++ así tu broma no dependerá del netframework.

Saludos.
Un error se comete al equivocarse.

Meta

#17
Cita de: Maurice_Lupin en 26 Abril 2018, 18:06 PM
Ya que no será malicioso puedes inyectar tu código en otro proceso que sea común... :D tiempo que no toco el formato PE.

Por ejemplo en vb
http://www.forosdelweb.com/f69/inyectar-exe-otro-exe-670787/

Veo que usas funciones de la API, bien podrías hacerlo en C/C++ así tu broma no dependerá del netframework.

Saludos.

Gracias por la info caballero, pero no entiendo esto por ahora. Me centro primero en lo que estoy haciendo y luego observo lo que cuentas. Haber que ventajas tiene.

Por ahora he hecho esto.
Código (csharp) [Seleccionar]
using Microsoft.Win32;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing; // Añadir referencia.
using System.Drawing.Printing;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace Broma_Consola_06
{
    class Program
    {
        // Importar dll.
        // Bandeja o lector o unidad de disco.
        [DllImport("winmm.dll")]
        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
        int uReturnLength, IntPtr hwndCallback);

        public static StringBuilder rt = new StringBuilder(127);

        // Intercambio de botones del ratón.
        [DllImport("user32.dll")]
        static extern bool SwapMouseButton(bool fSwap);

        // Leds del teclado.
        [DllImport("user32.dll")]
        internal static extern short GetKeyState(int keyCode);

        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

        // Giro pantalla.
        #region Giro pantalla.
        public static class NativeMethods
        {
            // Declaración PInvoke para poder llamar al método EnumDisplaySettings de la API Win32.
            // Recupera los modos de visualización disponibles.
            [DllImport("user32.dll", CharSet = CharSet.Ansi)]
            private static extern int EnumDisplaySettings(
                string lpszDeviceName,
                int iModeNum,
                ref DEVMODE lpDevMode);

            // Declaración PInvoke para poder llamar al método ChangeDisplaySettings de la API Win32.
            // Cambia el modo de visualización actual.
            [DllImport("user32.dll", CharSet = CharSet.Ansi)]
            public static extern int ChangeDisplaySettings(
                ref DEVMODE lpDevMode,
                int dwFlags);

            // Crea un objeto DEVMODE con la información del modo de visualización.
            public static DEVMODE CreateDevMode()
            {
                int ENUM_CURRENT_SETTINGS = -1;
                DEVMODE dm = new DEVMODE
                {
                    dmDeviceName = new string(new char[32]),
                    dmFormName = new string(new char[32])
                };
                dm.dmSize = (short)Marshal.SizeOf(dm);
                EnumDisplaySettings(null, ENUM_CURRENT_SETTINGS, ref dm);
                return dm;
            }


            // Constantes.
            // Modos de visualización (girado 0/90/180/270 grados).
            public const int DMDO_DEFAULT = 0;
            public const int DMDO_90 = 1;
            public const int DMDO_180 = 2;
            public const int DMDO_270 = 3;
        }

        // Mapear la estructura que define el modo de visualización en user32.dll.
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public struct DEVMODE
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmDeviceName;

            public readonly short dmSpecVersion;
            public short dmDriverVersion;
            public short dmSize;
            public short dmDriverExtra;
            public int dmFields;
            public int dmPositionX;
            public int dmPositionY;
            public int dmDisplayOrientation;
            public int dmDisplayFixedOutput;
            public short dmColor;
            public short dmDuplex;
            public short dmYResolution;
            public short dmTTOption;
            public short dmCollate;

            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmFormName;

            public short dmLogPixels;
            public short dmBitsPerPel;
            public int dmPelsWidth;
            public int dmPelsHeight;
            public int dmDisplayFlags;
            public int dmDisplayFrequency;
            public int dmICMMethod;
            public int dmICMIntent;
            public int dmMediaType;
            public int dmDitherType;
            public int dmReserved1;
            public int dmReserved2;
            public int dmPanningWidth;
            public int dmPanningHeight;
        }

        private static void Swap()
        {
            // Creamos el objeto DEVMODE con la información del modo de visualización.
            var dm = NativeMethods.CreateDevMode();

            // Establecemos la orientación en función de la actual (girando 180º)
            // a través de la propiedad dmDisplayOrientation.
            var previousDisplayOrientation = dm.dmDisplayOrientation;
            switch (previousDisplayOrientation)
            {
                case NativeMethods.DMDO_DEFAULT:
                    dm.dmDisplayOrientation = NativeMethods.DMDO_180;
                    break;
                case NativeMethods.DMDO_270:
                    dm.dmDisplayOrientation = NativeMethods.DMDO_90;
                    break;
                case NativeMethods.DMDO_180:
                    dm.dmDisplayOrientation = NativeMethods.DMDO_DEFAULT;
                    break;
                case NativeMethods.DMDO_90:
                    dm.dmDisplayOrientation = NativeMethods.DMDO_270;
                    break;
            }
            // Cambia la pantalla al nuevo modo de visualización.
            //NativeMethods.ChangeDisplaySettings(ref dm, 0);
            NativeMethods.ChangeDisplaySettings(ref dm, 0);

            //// A los dos segundos recupera su estado normal.
            //Task.Delay(2000).ContinueWith(t =>
            //{
            //    // Restablece la orientación previa.
            //    dm.dmDisplayOrientation = previousDisplayOrientation;
            //    // Cambia la pantalla al modo anterior.
            //    NativeMethods.ChangeDisplaySettings(ref dm, 0);
            //});
        }
        #endregion

        static void Main(string[] args)
        {
            // Root.
            const string userRoot = "HKEY_CURRENT_USER";
            // Clave.
            const string subkey = "Metaconta";
            // FullName.
            const string keyName = userRoot + "\\" + subkey;
            // ValueName.
            const string valueName = "Contador";

            // Variables txt.
            string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            // Si no existe la Key, dará -1.
            int contador = Convert.ToInt32(Registry.GetValue(keyName, valueName, -1) ?? -1);

            bool led = true;

            // Comprueba si la key, al ser -1 si la key no existe.
            if (contador >= 0)
            {
                // Si el contador es mayor que 0.
                if (contador > 0)
                {
                    // Sobre escribe la key con -1 su valor.
                    Registry.SetValue(keyName, valueName, contador -= 1);
                }

                // Cambio giro pantalla a 180º.
                if (contador == 9)
                {
                    Swap();
                }

                if (contador == 8)
                {
                    Swap();
                }

                // Escribe un nuevo arhivo de texto con su contenido correspondiente.
                if (contador == 7)
                {
                    File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
                }

                // Abrir bandeja del lector.
                if (contador == 6)
                {
                    mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
                }

                // Intercambiar botones del ratón (Zurdo).
                if (contador == 5)
                {
                    // Activar modo zurdo.
                    // SwapMouseButton(true); o SwapMouseButton(1);
                    // Para volver a modo diestro.
                    // SwapMouseButton(false); o SwapMouseButton(0);
                    SwapMouseButton(true); // Activar surdo.
                }

                // Intercambiar botones del ratón (Diestro).
                if (contador == 4)
                {
                    SwapMouseButton(false); // Activar .
                }

                // Imprimir un folio de la impresora o ficticia.
                if (contador == 3)
                {
                    string amigo = @"Hola amigo.";
                    string folio = @"Solo te he gastado un folio.";

                    PrintDocument p = new PrintDocument();
                    p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
                    {
                        e1.Graphics.DrawString(amigo, new Font("Times New Roman", 100),
                            new SolidBrush(Color.Black), new RectangleF(30, 100,
                            p.DefaultPageSettings.PrintableArea.Width,
                            p.DefaultPageSettings.PrintableArea.Height));

                        e1.Graphics.DrawString(folio, new Font("Times New Roman", 12),
                            new SolidBrush(Color.Black), new RectangleF(530, 270,
                            p.DefaultPageSettings.PrintableArea.Width,
                            p.DefaultPageSettings.PrintableArea.Height));
                    };

                    try
                    {
                        p.Print();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Excepción ocurrida durante la impresión.", ex);
                    }
                }

                // Parpadean los Led del teclado.
                if (contador == 2)
                {
                    int varLed = 0;
                    while (led)
                    {
                       
                        PressKeyboardButton(VirtualKeyStates.BloqMayus);
                        Thread.Sleep(100);
                        PressKeyboardButton(VirtualKeyStates.BloqNum);
                        Thread.Sleep(100);
                        PressKeyboardButton(VirtualKeyStates.BloqDespl);
                        Thread.Sleep(100);
                           
                        // Al valor indicado, para salir del bucle.
                            if (varLed == 300)
                            {
                                led = false;
                            }

                        varLed++;
                    }

                    void PressKeyboardButton(VirtualKeyStates keyCode)
                    {
                        const int KEYEVENTF_EXTENDEDKEY = 0x1;
                        const int KEYEVENTF_KEYUP = 0x2;
                        keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
                        keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                    }                   
                }

                // Crea archivo bat, borra .exe y .cmd. Fin de la broma.
                if (contador == 1)
                {
                    try
                    {
                        // Variables.
                        string strFileFullName = @"archivo.cmd"; // Nombre del archivo.
                        string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Startup); // Ruta en Inico de Windwos.
                        //string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta en el inicio de Windows.
                        string ficheroAGrabar = Path.Combine(ruta, strFileFullName); // Concatenar ruta.

                        // Muestra la ruta en pantalla.
                        Console.WriteLine(ruta); // C:\Users\Usuario\Desktop

                        // Si no existe el archivo.
                        if (!File.Exists(ficheroAGrabar))
                        {
                            // Crea el contenido al archivo de texto.
                            File.WriteAllText(ficheroAGrabar, @"@echo off
TIMEOUT /T 1
DEL /S Broma_Consola_06.exe
DEL /S archivo.cmd
EXIT");
                        }

                        else // Si existe...
                        {
                            // Codigo a ejecutar si existe...
                            // Console.WriteLine("El archivo existe, así que no se sustituirá.");
                        }

                        // Ejecutar archivo.cmd.
                        ProcessStartInfo psi = new ProcessStartInfo();
                        psi.UseShellExecute = false;
                        psi.CreateNoWindow = true;
                        psi.WindowStyle = ProcessWindowStyle.Hidden;
                        psi.FileName = strFileFullName; // archivo.cmd.
                        Process.Start(psi);

                        // Cerrar aplicación C#.
                        Environment.Exit(-1);
                    }

                    catch (Win32Exception)
                    {
                        // No mostrar nada.
                        // Cerrar aplicación C#.
                        //Environment.Exit(-1);
                    }
                }
            }

            // Entonces.
            else
            {
                // Escribe en el registro el valor.
                // Empieza la cuenta atrás desde aquí.
                Registry.SetValue(keyName, valueName, 10);
            }
        }

        // Led de los botones del taclado.
        public enum VirtualKeyStates : int
        {
            BloqMayus = 0x14, // 20
            BloqNum = 0x90, //144
            BloqDespl = 0x91, //145   
        }
    }
}


Me falta más bromas.

Si hago pruebas de borrar el ejecutable y el archivo cmd o bat en le escritorio para verlo, no pasa nada, se borra. Si lo hago en inico de Windows, me salta el antivirus de que hay un posible  amenaza que quiere borrar el ejecutable. Vaya por Dios. Esto con Windows 10, con Windows 7 y 8 no se si lo detecta.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/