Článek SQL Server Pro "Dešifrování objektů SQL Server" stále funguje v SQL Server 2008.
Musíte se připojit přes DAC. Viz soubor "Dešifrování uložených procedur SQL 2005, funkcí, spouštěčů, views.sql" v stažení .
Jen pro shrnutí kroků, které provádí pro následující definici uložené procedury
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Načte zašifrovaný text objektu z
imageval
vsys.sysobjvalues
a uloží jej do proměnné@ContentOfEncryptedObject
- Vypočítá
@ObjectDataLength
zDATALENGTH(@ContentOfEncryptedObject)/2
. - Generuje
ALTER PROCEDURE
příkaz doplněný na správnou délku pomocí-
znak (takže v tomto případěALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
) - Spustí
ALTER
příkaz, načte zašifrovanou verzi zsys.sysobjvalues
a uloží to do proměnné@ContentOfFakeEncryptedObject
pak vrátí změnu. - Vygeneruje
CREATE PROCEDURE
příkaz doplněný na správnou délku pomocí-
znak (takže v tomto případěCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). To se uloží do proměnné@ContentOfFakeObject
Poté prochází pro @i = 1 to @ObjectDataLength
a dešifruje definici znak po znaku pomocí následujícího XOR
výpočet.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)