SQL Serverのプロ記事"Decrypt SQL Server Objects"はまだあなたがDACを経由して接続する必要があるSQL Serverで2008
に動作します。 the downloadの "SQL 2005のストアドプロシージャ、関数、トリガ、views.sqlの解読"ファイルを参照してください。
ちょうど次のストアド・プロシージャの定義
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- は
sys.sysobjvalues
でimageval
列から暗号化対象テキストを取得し、変数@ContentOfEncryptedObject
- 計算し
@ObjectDataLength
に格納するためにそれが実行する手順を要約しますDATALENGTH(@ContentOfEncryptedObject)/2
から。
- は、
- は
ALTER
ステートメントを実行する(したがって、この場合にALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
)-
文字で正しい長さにパディングALTER PROCEDURE
文を生成し、変数@ContentOfFakeEncryptedObject
にその変更をロールバックsys.sysobjvalues
とストアから暗号化されたバージョンを取得します。
-
文字(この場合はCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
)で正しい長さに埋め込まれたCREATE PROCEDURE
ステートメントを生成します。これは、それが、その後@i = 1 to @ObjectDataLength
用をループし、次XOR
計算を使用して、一度に定義文字を解読し、変数@ContentOfFakeObject
に保存されます。
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1))^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1))^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)
ポール・ホワイトが なぜ上記作品の詳細に入る非常に素晴らしい記事を書いていて、それは が変更に頼らない代替方法を提供しますUPDATE対象:The Internals of WITH ENCRYPTION
私のSPを解読するために実行する必要のあるスクリプトを教えてください。それは "SQL 2005のストアドプロシージャ、関数、トリガ、views.sql"の復号化からですか? –
ありがとう、私はDACを使用してそのスクリプトを実行していたと私のためにうまく動作しています。 –
ニース。私はこれを深く見ていなかった。 – gbn