sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 でストアド プロシージャを解読する方法

    SQL Server Pro の記事 "Decrypt SQL Server Objects" SQL Server 2008 でも引き続き機能します。

    DAC経由で接続する必要があります。 ダウンロード .

    次のストアド プロシージャ定義に対して実行する手順を要約すると

    CREATE PROC dbo.myprocWITH ENCRYPTIONASSELECT 'FOO'  
    1. imageval から暗号化されたオブジェクト テキストを取得します sys.sysobjvalues の列 変数 @ContentOfEncryptedObject に格納します
    2. @ObjectDataLength を計算します DATALENGTH(@ContentOfEncryptedObject)/2 から .
    3. ALTER PROCEDURE を生成します - で正しい長さにパディングされたステートメント 文字 (この場合は ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------ )
    4. ALTER を実行します ステートメント、sys.sysobjvalues から暗号化されたバージョンを取得します それを変数 @ContentOfFakeEncryptedObject に格納します その後、変更をロールバックします。
    5. CREATE PROCEDURE を生成します - で正しい長さにパディングされたステートメント 文字 (この場合は CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-------------- )。これは変数 @ContentOfFakeObject に格納されます

    次に、for @i =1 to @ObjectDataLength をループします。 次の XOR を使用して、一度に 1 文字ずつ定義を復号化します

    NCHAR( UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^ ( UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^ UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1)) ) )  

    1. EntityFrameworkをインストールせずに動作するようにODP.NETをデプロイおよび構成する

    2. PHP PDO MySQL IN(?、?、?

    3. Mysql1ランダム行

    4. JTableの列名が印刷されない