Enkripsi prosedur tersimpan dan fungsi tersimpan: DENGAN ENKRIPSI
<!--[jika !supportLineBreakNewLine]-->
<!--[endif]-->
BUAT prosedur dbo.sp_XML_main
@table_name nvarchar(260)='',
@dirname nvarchar(20)=''
DENGAN ENKRIPSI
sebagai
awal
............ ........
end
go
Dekripsi prosedur tersimpan dan fungsi tersimpan
jika ada (pilih * dari dbo.sysobjects di mana id = object_id(N'[dbo].[sp_decrypt]') dan OBJECTPROPERTY(id, N'IsProcedure ') = 1)
prosedur drop [dbo].[sp_decrypt]
GO
/*--Fungsi crack, prosedur, pemicu, tampilan. Hanya untuk SQLSERVER2000
--Penulis: J9988-- Hak cipta dilindungi undang-undang*/
/*--Contoh panggilan
- -Dekripsi prosedur tersimpan yang ditentukan
exec sp_decrypt 'AppSP_test'
--Dekripsi semua prosedur tersimpan
mendeklarasikan kursor tb untuk
memilih nama dari sysobjects di mana xtype='P' dan status>0 dan nama<>'sp_decrypt'
deklarasikan @name sysname
buka tb
ambil selanjutnya dari tb ke @name
while @@fetch_status=0
mulai
mencetak '/*-------stored procedure['+@name+'] ---------- -*/'
exec sp_decrypt @nama
ambil selanjutnya dari tb ke @nama
akhir
tutup tb
batalkan alokasi tb
--*/
jika ada (pilih * dari dbo.sysobjects di mana id = object_id(N'[dbo].[SP_DECRYPT]') dan OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SP_DECRYPT]
GO
CREATE PROCEDURE sp_decrypt(@objectName varchar(50))
AS
mulai
set nocount on
--Byte yang retak tidak dibatasi, berlaku untuk prosedur, fungsi, tampilan, pemicu yang disimpan SQLSERVER2000
--Memperbaiki
kesalahan yang tidak dapat didekripsi dengan benar oleh pemicu tampilan versi sebelumnya--
Jika Anda menemukan kesalahan, silakan E_MAIL: [email protected]
mulai
mendeklarasikan @objectname1 varchar(100),@orgvarbin varbinary(8000)
mendeklarasikan @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
MENYATAKAN @OrigSpText1 nvarchar(4000 ), @OrigSpText2 nvarchar(4000), @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
mendeklarasikan @i int,@status int,@type varchar(10),@parentid int
mendeklarasikan @colid int,@n int, @q int,@j int,@k int,@encrypted int,@number int
pilih @type=xtype,@parentid=parent_obj dari sysobjects di mana id=object_id(@ObjectName)
buat tabel #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
masukkan #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)
pilih @number= maks(angka) dari #temp
set @k=0
sementara @k< =@number
mulai
jika ada(pilih 1 dari syscomments di mana id=object_id(@namaobjek) dan number=@k )
mulai
jika @type='P'
set @sql1=(case ketika @number>1 lalu ' ALTER PROSEDUR '+ @objectName +';'+rtrim(@k)+' DENGAN ENKRIPSI SEBAGAI '
else 'ALTER PROCEDURE '+ @objectName+' DENGAN ENKRIPSI SEBAGAI '
end)
jika @type='TR'
mulai
deklarasikan @parent_obj varchar(255),@tr_parent_xtype varchar(10)
pilih @parent_obj=parent_obj dari sysobjects di mana id=object_id(@objectName)
pilih @tr_parent_xtype=xtype dari sysobjects di mana id=@parent_obj
if @tr_parent_xtype='V'
mulai
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' DENGAN ENCRYPTION INSTERD OF INSERT AS PRINT 1 '
end
else
mulai
set @sql1='ALTER TRIGGER '+ @objectname+' ON '+OBJECT_NAME(@parentid)+' DENGAN ENKRIPSI UNTUK INSERT AS PRINT 1 '
end
end
if @type='FN' atau @type='TF' atau @type='IF'
set @sql1=(case @type ketika 'TF' lalu
'ALTER FUNCTION '+ @objectName+'(@a char(1)) mengembalikan @b table(a varchar(10)) dengan enkripsi sebagai mulai masukkan @b pilih @a return end '
ketika 'FN ' lalu
'ALTER FUNCTION '+ @objectName+'(@a char(1)) mengembalikan char(1) dengan enkripsi sebagai awal return @a end'
ketika 'IF' lalu
'ALTER FUNCTION '+ @objectName+'(@a char( 1)) mengembalikan tabel dengan enkripsi sebagai pengembalian pilih @a sebagai'
akhir)
if @type='V'
set @sql1='ALTER VIEW '+@objectname+' DENGAN ENKRIPSI SEBAGAI PILIH 1 sebagai f'
set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
pilih @sql2=REPLICATE('-',8000)
set @sql3='exec(@sql1'
pilih @colid=max(colid) dari #temp di mana number=@k
set @n=1
sementara @n<=CEILING(1.0*(@colid-1)/2) dan len(@sQL3)<=3996
mulai
set @ sql3=@sql3+'+@'
set @n=@n+1
setakhir
@sql3=@sql3+')'
exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1= @sql1,@=@sql2
setakhir
@k=@k+1
akhir
setel @k=0
sementara @k< =@angka
dimulai
jika ada (pilih 1 dari syscomments di mana id=object_id(@namaobjek) dan number=@k )
mulai
pilih @colid=max(colid) dari #temp di mana number=@k
set @n=1
sementara @n< =@colid
mulai
pilih @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n dan number=@k
SET @OrigSpText3=(PILIH ctext FROM syscomments WHERE id=object_id(@objectName) dan colid=@n dan number=@k )
if @n=1
dimulai
if @type='P'
SET @OrigSpText2=(case when @number >1 lalu 'BUAT PROSEDUR '+ @objectName +';'+rtrim(@k)+' DENGAN ENKRIPSI SEBAGAI '
lain 'BUAT PROSEDUR '+ @objectName +' DENGAN ENKRIPSI SEBAGAI '
akhir)
if @type='FN' atau @type='TF' atau @type='IF'
SET @OrigSpText2=(case @type ketika 'TF' lalu
'CREATE FUNCTION '+ @objectName+'(@a char(1)) mengembalikan @b tabel(a varchar(10)) dengan enkripsi sebagai mulai masukkan @b pilih @a return end '
ketika 'FN' lalu
'CREATE FUNCTION '+ @objectName+'(@a char(1)) mengembalikan char(1) dengan enkripsi sebagai awal return @a end'
ketika 'IF' lalu
'CREATE FUNCTION '+ @objectName+'(@a char(1)) mengembalikan tabel dengan enkripsi sebagai return select @a as a'
end)
jika @type='TR'
dimulai
if @tr_parent_xtype='V'
mulai
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' DENGAN ENKRIPSI BUKAN INSERT AS PRINT 1 '
end
else
mulai
set @OrigSpText2='CREATE TRIGGER ' +@objectname+' ON '+OBJECT_NAME(@parentid)+' DENGAN ENKRIPSI UNTUK INSERT AS PRINT 1 '
end
akhir
if @type='V'
set @OrigSpText2='CREATE VIEW '+@objectname+' DENGAN ENKRIPSI SEBAGAI PILIH 1 sebagai f'
set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
mulai
SET @OrigSpText2=REPLICATE('-', 4000)
end
SET @i=1
SET @ resultp = replika(N'A', (datalength(@OrigSpText1) / 2))
SAAT @i<=datalength(@OrigSpText1)/2
MULAI
SET @resultsp = barang(@resultsp, @i, 1, NCHAR(UNICODE( substring(@OrigSpText1, @i, 1)) ^
(UNICODE(substring(@OrigSpText2, @i, 1)) ^
UNICODE(substring(@OrigSpText3, @i, 1)))))
SET @i=@i+ 1
AKHIR
setel @orgvarbin=cast(@OrigSpText1 sebagai varbinary(8000))
setel @resultsp=(case ketika @encrypted=1
lalu @resultsp
else convert(nvarchar(4000),case ketika @status&2=2 lalu uncompress(@orgvarbin) else @orgvarbin end)
end)
print @resultsp
set @n=@n+1
end
end
set @k=@k+1
end
drop table #temp
rollback tran
end