TDW RScan - сканер рекурсий
TDW RScan
Описание
Многие, я думаю, замечали при компиляции около значения использования стека появляется сообщение, говорящее о том, что в скрипте находится рекурсия. Выявить её достаточно проблематично, поскольку необходимо проверять каждую вложенную функцию, что довольно долго. По этой причине и была разработана библиотека-сканер для поиска рекурсий в скрипте.
Документация
Как говорилось выше, основная функциональность библиотеки - поиск рекурсий. Библиотека проверяет все вложенные функции, а также функции вложенные во вложенные функции и т.д., пока не найдёт рекурсию. Количество уровней вложенности ограничено. Это делается для того, чтобы увеличить скорость работы сканера. Тем не менее библиотека представляет возможность изменить данное значение, определив макрос RSCAN_MAX_NESTED_LEVEL до включения библиотеки. Максимальное значение для уровня вложенности - 128. Значение по-умолчанию и рекомендуемое - 32.
Название функции |
Описание |
RScan_Run |
Функция принимает необязательный параметр - адрес функции. Данная функция запускает и инициализирует сканер. Если был передан адрес, то функция запустит сканер только для этого адреса, т.е. другие функции не будут просканированы.
PHP код:
forward public func1(); forward public func2(); main() { RScan_Run(); goto ___avoid_recursion; // избежать вызов рекурсии func1(); ___avoid_recursion: } func1() { func2(); } func2() { func1(); }
|
addressofex |
Дополнительная функция для определения адреса абсолютно любой функции. Принимает вызов функции.
PHP код:
addressofex(somefunc(0,0));
|
Библиотека имеет зависимость от
amx_assembly, однако в скором времени я попытаюсь сделать её автономной.
Скачать
Установка
- Перейдите в репозиторий на github (ссылка выше).
- Для скачивания на открывшейся странице нажмите на кнопку "Clone or download" (зелёного цвета) и в открывшемся меню - "Download ZIP".
- Все файлы библиотеки перемести в папку '/pawno/includes/'.
- Скомпилировать изменённые вами скрипты.
Автор:
VVWVV
Распространяется по лицензии ZLIB.