Як зруйнувати сервер Firebird
Іноді необхідно викликати збій серверного движка Firebird, щоб створити файл дампа або перевірити надійність вашої схеми резервного копіювання/реплікації, або для цілей налагодження.
Щоб спровокувати збій у Windows, ви можете скористатися наступною UDF: badudf.dll.7z
Завантажте її, покладіть у папку UDF і створіть .bat файл із наступним вмістом:
@echo off
setlocal enabledelayedexpansion enableextensions
set fbc=C:\HQBird25.in
set dbnm=%~dp0tmptest.fdb.tmp
set usr=SYSDBA
set psw=masterkey
del 2>nul
echo create database 'localhost:!dbnm!' user '!usr!' password '!psw!'; | "!fbc!\isql.exe" -q -z
(
echo set echo on;
echo declare external function crashme
echo returns int by value
echo entry_point 'crashme' module_name 'badudf';
echo commit;
echo show function;
echo select crashme(^) from rdb$database;
) > %~dp0tmptest.sql.tmp
"!fbc!\isql.exe" ^
localhost:!dbnm! ^
-q -i %~dp0tmptest.sql.tmp ^
-user !usr! -pas !psw!
del !dbnm!
del %~dp0tmptest.sql.tmp
У скрипті призначте змінній середовища fbc шлях до папки Firebird, наприклад
c:\Firebird25.in або C:\Firebird30
а також ваші фактичні логін і пароль суперкористувача (SYSDBA/masterkey за замовчуванням) змінним usr і psw.
Скрипт створить тимчасову базу даних, зареєструє в ній UDF і виконає «killer query», після чого видалить базу даних.
Результатом буде збій Firebird, і якщо ви правильно налаштували Windows Error Reporting, буде створено дамп процесу firebird.exe.
Будь ласка, не реєструйте BadUDF.dll у робочій базі даних!
Також видаліть її з папки UDF після експерименту.