Цю сторінку перекладено машинним перекладом. Читайте англійський оригінал. English

Бібліотека IBSurgeon

Як зруйнувати сервер Firebird

Іноді необхідно викликати збій серверного движка Firebird, щоб створити файл дампа або перевірити надійність вашої схеми резервного копіювання/реплікації, або для цілей налагодження.

Щоб спровокувати збій у Windows, ви можете скористатися наступною UDF: badudf.dll.7z

Завантажте її, покладіть у папку UDF і створіть .bat файл із наступним вмістом:

Code
@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 після експерименту.