Cifrado de procedimientos almacenados y funciones almacenadas: CON CIFRADO
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
CREAR procedimiento dbo.sp_XML_main
@table_name nvarchar(260)='',
@dirname nvarchar(20)=''
CON CIFRADO
como
comienzo
............ ........
end
go
Descifrado de procedimientos almacenados y funciones almacenadas
si existen (seleccione * de dbo.sysobjects donde id = object_id(N'[dbo].[sp_decrypt]') y OBJECTPROPERTY(id, N'IsProcedure ') = 1)
soltar procedimiento [dbo].[sp_decrypt]
GO
/*--Descifrar funciones, procedimientos, activadores y vistas Solo para SQLSERVER2000
--Autor: J9988-- Todos los derechos reservados*/
/*--Ejemplo de llamada
- -Descifrar el procedimiento almacenado especificado
exec sp_decrypt 'AppSP_test'
--Descifrar todos los procedimientos almacenados
declarar tb cursor para
seleccionar el nombre de sysobjects donde xtype='P' y status>0 y nombre<>'sp_decrypt'
declarar @name nombre del sistema
abrir tb
buscar siguiente de tb en @nombre
mientras @@fetch_status=0
comenzar
imprimir '/*-------procedimiento almacenado['+@nombre+'] ---------- -*/'
exec sp_decrypt @name
buscar siguiente de tb a @name
finalizar
cerrar tb
desasignar tb
--*/
si existe (seleccione * de dbo.sysobjects donde id = object_id(N'[dbo].[SP_DECRYPT]') y OBJECTPROPERTY(id, N'IsProcedure') = 1)
elimine el procedimiento [dbo].[SP_DECRYPT]
GO
CREAR PROCEDIMIENTO sp_decrypt(@objectName varchar(50))
AS
start
set nocount on
--Los bytes crackeados no están restringidos, aplicables a los procedimientos almacenados, funciones, vistas y activadores de SQLSERVER2000
--Se corrigió
el error de que la versión anterior de los activadores de vista no puede descifrar correctamente--
Si encuentra un error, envíe un CORREO ELECTRÓNICO: [email protected]
comenzar tran
declarar @objectname1 varchar(100),@orgvarbin varbinary(8000)
declarar @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
DECLARAR @OrigSpText1 nvarchar(4000) ), @OrigSpText2 nvarchar(4000), @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declarar @i int,@status int,@type varchar(10),@parentid int
declarar @colid int,@n int, @q int,@j int,@k int,@encrypted int,@number int
seleccione @type=xtype,@parentid=parent_obj de sysobjects donde id=object_id(@ObjectName)
crear tabla #temp(número int,colid int,ctext varbinary(8000),encrypted int,status int)
inserte #temp SELECCIONE número,colid,ctext,encrypted,status FROM syscomments DONDE id = object_id(@objectName)
seleccione @number= max(número) de #temp
establecido @k=0
mientras que @k< =@número
comienza
si existe (seleccione 1 de syscomments donde id=object_id(@objectname) y número=@k )
comienza
si @type='P'
establece @sql1=(caso cuando @número>1 entonces ' ALTERAR PROCEDIMIENTO '+ @objectName +';'+rtrim(@k)+' CON CIFRADO COMO '
else 'ALTERAR PROCEDIMIENTO '+ @objectName+' CON CIFRADO COMO '
fin)
si @type='TR'
comienza
a declarar @parent_obj varchar(255),@tr_parent_xtype varchar(10)
selecciona @parent_obj=parent_obj de sysobjects donde id=object_id(@objectName)
selecciona @tr_parent_xtype=xtype de sysobjects donde id=@parent_obj
si @tr_parent_xtype='V'
comienza
a establecer @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' CON CIFRADO INSTERD OF INSERT AS PRINT 1 '
fin
si no
comienza
a establecer @sql1='ALTER TRIGGER '+ @objectname+' ON '+OBJECT_NAME(@parentid)+' CON CIFRADO PARA INSERTAR COMO PRINT 1 '
end
end
if @type='FN' o @type='TF' o @type='IF'
set @sql1=(case @type cuando 'TF' y luego
'ALTER FUNCTION '+ @objectName+'(@a char(1)) devuelve @b table(a varchar(10)) con cifrado como inicio insert @b select @a return end '
cuando 'FN ' luego
'ALTER FUNCTION '+ @objectName+'(@a char(1)) devuelve char(1) con cifrado como inicio devuelve @a end'
cuando 'IF' luego
'ALTER FUNCTION '+ @objectName+'(@a char( 1)) devuelve la tabla con cifrado como retorno seleccione @a como '
final)
if @type='V'
set @sql1='ALTER VIEW '+@objectname+' CON CIFRADO COMO SELECCIONAR 1 como f'
set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
select @sql2=REPLICATE('-',8000)
set @sql3='exec(@sql1'
select @colid=max(colid) de #temp donde número=@k
establece @n=1
mientras que @n<=CEILING(1.0*(@colid-1)/2) y len(@sQL3)<=3996
comienzan
a establecer @ sql3=@sql3+'+@'
set @n=@n+1
end
set @sql3=@sql3+')'
exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1= @sql1,@=@sql2
final
conjunto @k=@k+1
final
establecer @k=0
mientras @k< =@número
comienza
si existe (seleccione 1 de syscomments donde id=object_id(@objectname) y número=@k )
comience
a seleccionar @colid=max(colid) de #temp donde número=@k
establezca @n=1
mientras @n< =@colid
comienza
a seleccionar @OrigSpText1=ctext,@encrypted=encrypted,@status=status DESDE #temp DONDE colid=@n y número=@k
SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k )
si @n=1
comienza
si @type='P'
SET @OrigSpText2=(caso cuando @number >1 luego 'CREAR PROCEDIMIENTO '+ @objectName +';'+rtrim(@k)+' CON CIFRADO COMO '
else 'CREAR PROCEDIMIENTO '+ @objectName +' CON CIFRADO COMO '
fin)
if @type='FN' or @type='TF' or @type='IF'
SET @OrigSpText2=(case @type cuando 'TF' entonces
'CREATE FUNCTION '+ @objectName+'(@a char(1)) devuelve @b tabla (a varchar(10)) con cifrado como inicio insertar @b seleccionar @a devolver final '
cuando 'FN' luego
'CREAR FUNCIÓN '+ @objectName+'(@a char(1)) devuelve char(1) con cifrado como inicio, retorno @a final'
cuando 'SI' y luego
'CREAR FUNCIÓN '+ @objectName+'(@a char(1)) devuelve la tabla con cifrado como retorno, seleccione @a como '
fin)
si @type='TR'
comienza
if @tr_parent_xtype='V'
comienza
a establecer @OrigSpText2='CREAR DISPARADOR '+@objectname+' ON '+OBJECT_NAME(@parentid)+' CON CIFRADO EN LUGAR DE INSERTAR COMO IMPRIMIR 1 '
fin
de lo contrario
comienza
a establecer @OrigSpText2='CREAR DISPARADOR ' +@objectname+' ON '+OBJECT_NAME(@parentid)+' CON CIFRADO PARA INSERTAR COMO IMPRIMIR 1 '
fin
fin
if @type='V'
set @OrigSpText2='CREAR VISTA '+@objectname+' CON CIFRADO COMO SELECCIONAR 1 como f'
set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
fin
si no
comenzar
SET @OrigSpText2=REPLICATE('-', 4000)
fin
SET @i=1
SET @ resultadosp = replicar(N'A', (datalength(@OrigSpText1) / 2))
MIENTRAS @i<=datalength(@OrigSpText1)/2
BEGIN
SET @resultsp = cosas(@resultsp, @i, 1, NCHAR(UNICODE( subcadena(@OrigSpText1, @i, 1)) ^
(UNICODE(subcadena(@OrigSpText2, @i, 1)) ^
UNICODE(subcadena(@OrigSpText3, @i, 1)))))
SET @i=@i+ 1
FIN
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))
set @resultsp=(caso cuando @encrypted=1
entonces @resultsp
else convert(nvarchar(4000), caso cuando @status&2=2 luego descomprima (@orgvarbin) else @orgvarbin end)
end)
print @resultsp
set @n=@n+1
end
end
set @k=@k+1
end
drop table #temp
rollback tran
end