5 лучших пользователей за месяц по количеству добавленных и опубликованных файлов
Мини статистика
Новостей 4954
Пользователей 13807
Комментариев 14691
ТОП-5 комментаторов
5 лучших пользователей за месяц по прокомментированным файлам
Опрос
Какая у вас версия CS 1.6?
Как не попасться на плагинах с бэкторами! [ПОИСК БЭКТОРОВ]
Добавил:๖ۣۜTheNega
Просмотров:6 373Дата:05.02.2013
В данной статье я постараюсь вам рассказать как искать бекдоры в скомпилированных плагинах *.amxx
Для этого понадобится: 1. Программа amxxdump 2. Текстовой редактор 3. Мозг 4. 2 руки( Желательно )
Немного о amxxdump: Это консольное приложение для просмотра исходного кода скомпилированого *.amxx файла. Сразу хочу сказать для некоторых личностей, что вы не получите готовый *.sma файл, а лишь дизассемблированный код плагина.
Начнем: 1. Скачиваем amxxdump ( Ниже ) 2. Распаковываем его на Рабочий стол( Вместе в папкой ) 3. Закидываем *.amxx файл в папку с amxxdump 4. Нажимаем Пуск-Выполнить. У вас появится окошко запуска программ. Пишем туда cmd 5. У вас откроется консоль выполнения команд. Нам нужно проложить путь до программы. Для этого нам нужно ввести несколько команд
1)cd Рабочий стол - ( Мы ведь положили программу на рабочий стол =) ) 2)cd amxxdump - ( Открываем папку с декомпилятором )
6. Вот мы и подошли к самой декомпиляции. У нас есть 2 варианта просмотра. Первых это в самой консоле или же сохранить всё в txt и смотреть там. Думаю второй вариант будет для всех удобней.
Для начала мы будет просматривать функцию plugin_init, чтобы узнать все команды, различные функции. в 90% бекдор можно найти именно там
Я буду приводить на специально подготовленном плагине, который вы сможете скачать ниже для тренеровки.
mxxdump - Название файла запуска -l - Показать номер строки и название файла у оператора BREAK. -j - Показать метки для jump, switch и case таблиц. -E - иИспользовать список параметров для стандартных вызовов native функций. Для работы необходимы .inc файлы. -D <название> - Дизассемблирование указанной функции. -j - Показать метки для jump, switch и case таблиц. plugin_init - Смотрим функцию plugin_init > init.txt - Сохранить всё в файл init.txt
Полный список команд:
Цитата
-a - не показывать адресные положения. -c - не показывать комментарии. -x - список всех public и stock функций плагина и их параметры. -n - список native функций, используемых в плагине. -D <название> - дизассемблирование указанной функции. -d - дизассемблировать код плагина. -s - показать все символы. -m - показать необходимые модули. -r <название> - поиск информации об указанной функции. -R <название> - поиск информации об указанной native функции. -v <значение> - показать значение адреса в разделе данных. -A <размер> - в дополнении к параметру -v, формирует дамп в зависимости от указанного размера ячеек. -V <значение> - показать значение адреса в разделе данных в качестве строки. -F <значение> - показать значение адреса в разделе данных в качестве числа с плавающей точкой. -f - показать названия всех файлов, код которых включен в плагин (stock). -l - показать номер строки и название файла у оператора BREAK. -j - показать метки для jump, switch и case таблиц. -e - попытаться сформировать данные от операторов push.c/const.pri. -E - использовать список параметров для стандартных вызовов native функций. Для работы необходимы .inc файлы. -N - не показывать рамзерность переменных, теги и стандартные значения. Подразумевает параметр -E. -g - список всех глобальных переменных. -h - скрыть номера параметров и их адреса. -! - показать лицензию программы. -? - помощь.
7. В папке с декомпилятором у нас появился текстовой файл init.txt с содержанием структуры функции plugin_init. Ну чтож, давайте рассмотрим его
Для тех, кто занимается скриптингом или же хотя бы работал с sma увидит на боли знакомые строки. Как видите никакой абракадабры. И что же мы видим? Ничего особенного, кроме консольной команды server_kill, но мы не знаем, что она выполняет и не будет пытаться пробовать у себя на сервере ведь так? Мы просто рассмотрим эту функцию, как рассматривали plugin_init.
8. Нам нужно запомнить куда обращается команда server_kill при вводе.В нашем случаи обработчиком этой команды является ServerKill
И как вы поняли у нас снова появился текстовой документ, но с названием serverkill.txt. Ну чтож рассмотрим его
Надеюсь многие поняли, что при выполнении данной команды ваш сервер выключится. Разумеется если вы найдете такое в каком нибудь *.amxx файле, то нужно удалить данный плагин с вашего сервера и постараться найти исходник данного плагина и компилировать самому.
На данном примере рассматривался САМЫЙ простой бекдор, который вы можете встретить.
Сейчас я приведу примеры, где следует искать:
Код
register_clcmd set_task Просто запуск функций.К примеру Tralala()
Сейчас я приведу примеры, что вам следует искать:
Код
server_cmd - Выполнения команд в консоль сервера get_cvar_string - получение настроек( К примеру получение rcon_password ) set_user_flags - Присвоение административных флагов Connect - Редирект bind - Редирект и т.д
Это лишь малая часть, что можно поискать. Бекдоры могут быть очень хорошо замаскированы, которые без анализа кода не разобрать.
Я надеюсь вы уловили суть того, что предоставляет самой декомпиляция *.amxx и по такому же принципу вы сможете