Wie man den Firebird-Server zum Absturz bringt
Manchmal ist es notwendig, die Firebird-Server-Engine zum Absturz zu bringen, um eine Dump-Datei zu erstellen oder die Zuverlässigkeit Ihres Backup-/Replikationsschemas zu überprüfen, oder zu Debugging-Zwecken.
Um den Absturz unter Windows auszulösen, können Sie die folgende UDF verwenden: badudf.dll.7z
Laden Sie sie herunter, legen Sie sie in den UDF-Ordner und erstellen Sie eine .bat-Datei mit folgendem Inhalt:
@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
Weisen Sie im Skript der Umgebungsvariable fbc den Pfad zum Firebird-Ordner zu, zum Beispiel
c:\Firebird25.in oder C:\Firebird30
und Ihren tatsächlichen Superuser-Login und Ihr Passwort (SYSDBA/masterkey ist die Standardeinstellung) den Variablen usr und psw zu.
Das Skript erstellt die temporäre Datenbank, registriert die UDF darin und führt die “Killer-Abfrage” aus, danach löscht es die Datenbank.
Das Ergebnis wird ein Firebird-Absturz sein, und wenn Sie die Windows-Fehlerberichterstattung richtig eingerichtet haben, erhalten Sie einen Dump des firebird.exe-Prozesses.
Bitte registrieren Sie BadUDF.dll nicht in der Produktionsdatenbank!
Löschen Sie sie außerdem nach dem Experiment aus dem UDF-Ordner.