
Привет всем. Совсем недавно нашел очень интересную уязвимость, которая позволяет беспрепятственно накручивать любые сохраненные данные игрока, в нашем случаи деньги или аммо, где есть возможность продавать их
Вообще всё началось с того, что мне дали dll дали и сказали, что это “чудо бот”, который создает ботов на сервере и накручивает деньги гы гы. После 5 минут рассматривания это оказался просто opengl32. Разузнав всю ситуацию начал вникать что и как и тут допер.
Вообще дело обстоит не так плохо, как кажется. До этого мало вообще кто додумается, но уязвимость можно использовать на практически любом zp, dr серверах, где есть сохранение денег(steam, ip) и передача денег.
Думаю не для кого не секрет, что есть софт “песочницы”, которые позволяют запускать множественные копии различных программ, даже если в ПО есть проверка на запуск более 1 копии. Ну, а так же я несколько лет назад выкладывал на мейк измененные exe файлы hl.exe на 47 и 48 протокол, позволяющие запускать несколько кс подряд. Надеюсь, все понимают, что стим не меняется при этом, так же как и ип и поэтому при заходе с нескольких кс на 1 сервер все деньги будут грузится и их можно спокойно передать на основной аккаунт бесчисленное количество раз – требуется лишь передавать и перезаходить.
Собственно в защите нет ничего специфического
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "AntiMydak"
#define VERSION "1.0"
#define AUTHOR "CrAsH"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public client_connect(id)
{
set_task(2.0, "CheckPlayer", id)
}
public CheckPlayer(id)
{
new szSteamID1[32], szIP1[32]
get_user_authid(id, szSteamID1, charsmax( szSteamID1 ))
get_user_ip(id, szIP1, charsmax( szIP1 ), 1)
new iPlayers[32]
new iPlayer, iNum
get_players(iPlayers, iNum)
for(new i; i < iNum; i++)
{
iPlayer = iPlayers[i]
if(iPlayer == id)
continue
new szSteamID2[32], szIP2[32]
get_user_authid(iPlayer, szSteamID2, charsmax( szSteamID2 ))
get_user_ip(iPlayer, szIP2, charsmax( szIP2 ), 1)
if(equal(szSteamID2, "STEAM_ID_LAN") || equal(szSteamID2, "VALVE_ID_LAN"))
{
if(equal(szIP1, szIP2))
{
new szName[32]
get_user_name(id, szName, charsmax( szName ))
log_to_file("addons/amxmodx/logs/antimydak.txt","%s пытался наебать", szName)
server_cmd("kick #%d ^"Наебать не получится. Ещё раз и тебе пиздец^" ", get_user_userid(id))
break
}
}else
if(equal(szSteamID1, szSteamID2))
{
new szName[32]
get_user_name(id, szName, charsmax( szName ))
log_to_file("addons/amxmodx/logs/antimydak.txt","%s пытался наебать", szName)
server_cmd("kick #%d ^"Наебать не получится. Ещё раз и тебе пиздец^" ", get_user_userid(id))
break
}
}
}
Может зря я всё это вам рассказал, а может и нет. Решать только вам. Я вам дал пищю для размышлений – вам и карты в руки.
Всем мир и удачи
Пускает. Во всяком случаи на том сервере, где впервые это обнаружилось такая возможность была. Думаю пускать не будет, если игрок реальный стим
название просто шикарное)
ээммм я не очень то понял ..но что с этим делать ?
спс за прогу