В данной статье я постараюсь вам рассказать как искать бекдоры в скомпилированных плагинах *.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% бекдор можно найти именно там

Я буду приводить на специально подготовленном плагине, который вы сможете скачать ниже для тренеровки.

Вводим в консоль
Код
amxxdump -l -j -e -E -D plugin_init backdoor_test.amxx > init.txt


Поясню.
a
Цитата
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

Вводим в консоль
Код
amxxdump -l -j -e -E -D ServerKill backdoor_test.amxx > serverkill.txt


И как вы поняли у нас снова появился текстовой документ, но с названием serverkill.txt. Ну чтож рассмотрим его

Надеюсь многие поняли, что при выполнении данной команды ваш сервер выключится. Разумеется если вы найдете такое в каком нибудь *.amxx файле, то нужно удалить данный плагин с вашего сервера и постараться найти исходник данного плагина и компилировать самому.

На данном примере рассматривался САМЫЙ простой бекдор, который вы можете встретить.

Сейчас я приведу примеры, где следует искать:
Код
register_clcmd  
  set_task  
  Просто запуск функций.К примеру Tralala()


Сейчас я приведу примеры, что вам следует искать:
Код
server_cmd - Выполнения команд в консоль сервера  
  get_cvar_string - получение настроек( К примеру получение rcon_password )  
  set_user_flags - Присвоение административных флагов  
  Connect - Редирект  
  bind - Редирект и т.д


Это лишь малая часть, что можно поискать. Бекдоры могут быть очень хорошо замаскированы, которые без анализа кода не разобрать.

Я надеюсь вы уловили суть того, что предоставляет самой декомпиляция *.amxx и по такому же принципу вы сможете

Цитата
Скачать amxdump.rar [190 КБ]
Скачать backdoor_test.rar [1 КБ]


Цитата
Источник: http://ya-cs.ru