Creando un ejecutable de broma

Iniciado por Meta, Marzo 27, 2018, 11:50:23 AM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Hola:

Hice un programa en la consola con C# sobre una broma. Por ahora es muy sencillo, falta pulirlo mucho y añadir lo que quiero hacer. Este ejecutable es para gasta una mini broma a los amigos, no abusar que desconfían hasta futuros amigos sin conocerte, jajajajajja.

Lo que he hecho hasta ahora para que se hagan una idea y funciona:
Está hecho en modo consola con el lenguaje C#.
Al ejecutar el ejecutable, nunca muestra la pantalla negra.
Crea un archivo de texto llamado Hola.txt.
Guarda dicho archivo en el escritorio, en este caso para hacer pruebas, pero en realidad el que quiera lo guarda en Startup, cada vez que inicia Windows, aparece el Holatxt abierto, pero esto más adelante.
En el archivo dice: Hola amigo.
Se guarda valores en el editor de registro, que cada cierto vez ejecutada, hay un contador. Tengo otro programa hecho pero con txt plano y en formato para guardar valores.
Abre la bandeja de disco si tiene alguno.

Lo que me falta por hacer y no tengo idea es:
Con el tiempo o veces que haz pulsado el ejecutable, se invierte 180º el escritorio, se pone al revéz.
Que cambie el ratón a zurdo.
Que busque si tiene impresora, imprima esta frase. Hola amigo. Solo te he gastado un folio.
Salga el simulador de pantalla de la muerte de Windwos con el tiempo de 2 segundos, luego dice: "Es una bromaaaaaa" y se quite.

Así por cada 3 inicios de Windows le ocurre algo nuevo indicado arriba.

Al final, que se borre el ejecutable, la idea es bromear, no dejar rastros ni tampoco fastidiar al amigo borrando cosas.

El código es muy básico pero se los dejo aquí. Poco a poco quiero aumentar funciones.

Código C#:
Código: php
using Microsoft.Win32;
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace Broma_Comsola_04
{
    class Program
    {
        // Importar dll.
        [DllImport("winmm.dll")]
        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
        int uReturnLength, IntPtr hwndCallback);

        public static StringBuilder rt = new StringBuilder(127);

        static void Main(string[] args)
        {
            // Root.
            const string userRoot = "HKEY_CURRENT_USER";
            // Clave.
            const string subkey = "Aaaaaaa";
            // 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);

            // 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);
                }

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

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

            }
            // Entonces.
            else
            {
                // Escribe en el registro el valor.
                Registry.SetValue(keyName, valueName, 3);
            }
        }
    }
}


¿Alguna ayuda?

Saludos.

jajajjaaajja ste men tiene mucho tiempo librexd

Buenas:

La verdad es que no, estoy haciendo un curso de electricidad de 6 horas de Lunes a Viernes, como a veces tenemos un hueco, pues entre los amigos, estamos hablando de esto.

Dejar claro, que este programa no se replica, ni nada, no modifica o borra archivos, es inofensivo, pero al que se le imprima un folio mientras tiene la pantalla al revés...

Jajaajajaajaja.

Ni idea como hacerlo, pero me imagine a la victima con cara de WTF y tenia que postear que si me rei un poco  ;D ;D ;D




Con la fuerza del mar, con la paz del rio


Buenas gente del foro:

Es bueno reírse un poco, entre nosotros estamos haciendo lo mismo, ajjajajajajaja.  ;D ;D ;D ;D ;D

Por fin me salió la parte de imprimir, pero se ve una ventanita con el boton cancelar, "Imprimiendo...", que no debería verse, solo imprimir con esta frase.

CitarHola amigo.

Solo te gasté un folio.

El código lo hice en un programa aparte, ya lo iré adaptando al código principal poco a poco. ;)

Código C# (Imprimir mensajes a impresora):
Código: php
using System;
using System.Drawing; // No olvidar y añadir referencia.
using System.Drawing.Printing;

namespace Impresora_Consola_01
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = @"Hola amigo.

Solo te he gastado un folio.";

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

            try
            {
                p.Print();
            }
            catch (Exception ex)
            {
                // throw new Exception("Exception Occured While Printing", ex);
            }
        }
    }
}


Si tienen alguna idea mejor de mejorarlo, bienvenido sea. ;) Al menos funciona.

En estos momentos estoy averiguando el cambio de pantalla o escritorio de 180º, ajjajaja.

Saludos.

Hola,..


Para intercambiar los botones del mouse  puedes llamar a la API: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Para rotar la pantalla quizas esto te sirva(no lo he probado): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Para poder generar el BSOD una forma sencilla es cerrar el procesos csrss.exe(necesitas ejecutar la aplicación como administrador).






No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola,..


Para intercambiar los botones del mouse  puedes llamar a la API: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Para rotar la pantalla quizas esto te sirva(no lo he probado): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Para poder generar el BSOD una forma sencilla es cerrar el procesos csrss.exe(necesitas ejecutar la aplicación como administrador).

Muchas gracias, investigaré y pondré resultados.

Otra cosa que no se me ocurrió, cambiar fondo pantalla.  ;D ;D ;D ;D ;D ;D ;D ;D

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
.......
Otra cosa que no se me ocurrió, cambiar fondo pantalla.  ;D ;D ;D ;D ;D ;D ;D ;D


para cambiar el fondo de pantalla puedes hacerlo de esta forma:
Código: csharp



[Runtime.InteropServices.DllImport("user32.dll", SetLastError = true, CharSet = Runtime.InteropServices.CharSet.Auto, BestFitMapping = false, ThrowOnUnmappableChar = true)]
public static bool SystemParametersInfo(uint uiAction, uint uiParam, string pvParam, uint fWinIni)
{
}


public static bool SetDesktopWallpaper(string img)
{
    try
    {
        using (Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true))
        {
            regKey.SetValue("TileWallpaper", "0");
            regKey.SetValue("WallpaperStyle", "0");
        }


        return SystemParametersInfo(20, null, img, 0);
    }
    catch (Exception ex)
    {
    }


    return false;
}





Buenas gente del foro:

Poco a poco hago las cosas por parte y gracias a vuestro apoyo.

Cambio de los botones del ratón para surdos y distros.



Código C#:
Código: php
using System;
using System.Runtime.InteropServices;

namespace Cambio_botones_raton_Consola_01
{
    class Program
    {
        // Cargar librería.
        [DllImport("user32.dll")]
        static extern bool SwapMouseButton(bool fSwap);

        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Cambio botones del ratón C# 2017";

            // Tamaño ventana consola.
            Console.WindowWidth = 29; // X. Ancho.
            Console.WindowHeight = 8; // Y. Alto.

            // Cursor invisible.
            Console.CursorVisible = false;

            // Posición del mansaje en la ventana.
            Console.SetCursorPosition(0, 0);
            Console.Write(@"Configuración ratón:

1 - Surdo.
2 - Diestro.
===========================");

            ConsoleKey key;

            do
            {
                key = Console.ReadKey(true).Key;

                string mensaje = string.Empty;

                // Leer tecla selecconada por el usuario.
                switch (key)
                {
                    case ConsoleKey.D1: // Tecla principal 1.
                    case ConsoleKey.NumPad1: // Tecla extendida 1.
                        Console.SetCursorPosition(0, 6);
                        SwapMouseButton(true); // Activar surdo.
                        // SwapMouseButton(1);
                        mensaje = "Modo surdo.";
                        break;

                    case ConsoleKey.D2:
                    case ConsoleKey.NumPad2:
                        SwapMouseButton(false); // Activar diestro.
                        // SwapMouseButton(0);
                        mensaje = "Modo diestro.";
                        break;
                }

                // Posición de los mensajes.
                Console.SetCursorPosition(0, 6);
                Console.Write("             "); // 13 espacios.
                Console.SetCursorPosition(0, 6);
                Console.Write(mensaje);

            }

            // Salir de la plicación al pulsar la tecla Escape.
            while (key != ConsoleKey.Escape);
        }
    }
}


Sigo con lo demás. Cuando tenga todos, se unificará en un solo programa.

Saludos.

Abril 04, 2018, 11:28:19 PM #9 Ultima modificación: Abril 04, 2018, 11:55:59 PM por Meta
Hola:

¿Qué les parece la broma?
Todavía queda mucho que pulir, poco a poco se va ampliando y mejorando.

Leer los comentarios para entender el código.

Código: php

using Microsoft.Win32;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace Broma_Consola_05
{
    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);

        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 raton = false;

            // 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);
                }

                // 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)
                {
                    while (raton)
                    {
                        PressKeyboardButton(VirtualKeyStates.BloqMayus);
                        Thread.Sleep(100);
                        PressKeyboardButton(VirtualKeyStates.BloqNum);
                        Thread.Sleep(100);
                        PressKeyboardButton(VirtualKeyStates.BloqDespl);
                        Thread.Sleep(100);
                    }

                    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);
                    }

                    raton = true;
                }

                // 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_05.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.
                Registry.SetValue(keyName, valueName, 10);
            }
        }

        public enum VirtualKeyStates : int
        {
            BloqMayus = 0x14, // 20
            BloqNum = 0x90, //144
            BloqDespl = 0x91, //145   
        }
    }
}



Saludos.