Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

Како срушити Firebird сервер

Понекад је неопходно срушити Firebird серверски мотор, да бисте креирали дамп датотеку или проверили поузданост вашег backup/replication плана, или у сврхе отклањања грешака.

Да бисте изазвали пад на 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

и ваше стварно superuser корисничко име и лозинку (SYSDBA/masterkey је подразумевано) променљивим usr и psw.

Скрипта ће креирати привремену базу података, регистровати UDF у њој и извршити “killer query”, након чега брише базу података.

Резултат ће бити пад Firebird-а и, ако сте правилно подесили Windows Error Reporting, дамп firebird.exe процеса.

Молимо вас да не региструјете BadUDF.dll у производној бази података!

Такође, обришите га из UDF фолдера након експеримента.