加密只要在存储过程的AS上面加这一句WITH ENCRYPTION 如: createPROCEDURE SP_XXX ( @objectnamevarchar(50) ) WITH ENCRYPTION AS ...... 解密 用法:把下面代码粘贴成新的存储过程,运行他的时候参数填要破解的存储过程,显示的结果就是要破解的存储过程的全部代码 createPROCEDURE sp_decrypt(@objectnamevarchar(50)) AS begin set nocount on --CSDN:j9988 copyright:2004.07.15 --V3.2 --破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器 --修正上一版"视图触发器"不能正确解密错误 --发现有错,请E_MAIL:CSDNj9988@tom.com begintran declare@objectname1varchar(100),@orgvarbinvarbinary(8000) declare@sql1nvarchar(4000),@sql2varchar(8000),@sql3nvarchar(4000),@sql4nvarchar(4000) DECLARE@OrigSpText1nvarchar(4000), @OrigSpText2nvarchar(4000) , @OrigSpText3nvarchar(4000), @resultspnvarchar(4000) declare@iint,@statusint,@typevarchar(10),@parentidint declare@colidint,@nint,@qint,@jint,@kint,@encryptedint,@numberint select@type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@objectname) createtable #temp(numberint,colid int,ctext varbinary(8000),encrypted int,status int) insert #tempSELECTnumber,colid,ctext,encrypted,status FROM syscomments WHERE id =object_id(@objectname) select@number=max(number) from #temp set@k=0 while@k<=@number begin ifexists(select1from syscomments where id=object_id(@objectname) andnumber=@k) begin if@type='P' set@sql1=(casewhen@number>1then'ALTER PROCEDURE '+@objectname+';'+rtrim(@k)+' WITH ENCRYPTION AS ' else'ALTER PROCEDURE '+@objectname+' WITH ENCRYPTION AS ' end) if@type='TR' begin declare@parent_objvarchar(255),@tr_parent_xtypevarchar(10) select@parent_obj=parent_obj from sysobjects where id=object_id(@objectname) select@tr_parent_xtype=xtype from sysobjects where id=@parent_obj if@tr_parent_xtype='V' begin set@sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 ' end else begin set@sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 ' end end if@type='FN'or@type='TF'or@type='IF' set@sql1=(case@typewhen'TF'then 'ALTER FUNCTION '+@objectname+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end ' when'FN'then 'ALTER FUNCTION '+@objectname+'(@a char(1)) returns char(1) with encryption as begin return @a end' when'IF'then 'ALTER FUNCTION '+@objectname+'(@a char(1)) returns table with encryption as return select @a as a' end) if@type='V' set@sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f' set@q=len(@sql1) set@sql1=@sql1+REPLICATE('-',4000-@q) select@sql2=REPLICATE('-',8000) set@sql3='exec(@sql1' select@colid=max(colid) from #tempwherenumber=@k set@n=1 while@n<=CEILING(1.0*(@colid-1)/2) andlen(@sql3)<=3996 begin set@sql3=@sql3+'+@' set@n=@n+1 end set@sql3=@sql3+')' exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2 end set@k=@k+1 end set@k=0 while@k<=@number begin ifexists(select1from syscomments where id=object_id(@objectname) andnumber=@k) begin select@colid=max(colid) from #tempwherenumber=@k set@n=1 while@n<=@colid begin select@OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #tempWHERE colid=@nandnumber=@k SET@OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectname) and colid=@nandnumber=@k) if@n=1 begin if@type='P' SET@OrigSpText2=(casewhen@number>1then'CREATE PROCEDURE '+@objectname+';'+rtrim(@k)+' WITH ENCRYPTION AS ' else'CREATE PROCEDURE '+@objectname+' WITH ENCRYPTION AS ' end) if@type='FN'or@type='TF'or@type='IF' SET@OrigSpText2=(case@typewhen'TF'then 'CREATE FUNCTION '+@objectname+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end ' when'FN'then 'CREATE FUNCTION '+@objectname+'(@a char(1)) returns char(1) with encryption as begin return @a end' when'IF'then 'CREATE FUNCTION '+@objectname+'(@a char(1)) returns table with encryption as return select @a as a' end) if@type='TR' begin if@tr_parent_xtype='V' begin set@OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 ' end else begin set@OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 ' end end if@type='V' set@OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f' set@q=4000-len(@OrigSpText2) set@OrigSpText2=@OrigSpText2+REPLICATE('-',@q) end else begin SET@OrigSpText2=REPLICATE('-', 4000) end SET@i=1 SET@resultsp=replicate(N'A', (datalength(@OrigSpText1) /2)) WHILE@i<=datalength(@OrigSpText1)/2 BEGIN SET@resultsp=stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^ (UNICODE(substring(@OrigSpText2, @i, 1)) ^ UNICODE(substring(@OrigSpText3, @i, 1))))) SET@i=@i+1 END set@orgvarbin=cast(@OrigSpText1asvarbinary(8000)) set@resultsp=(casewhen@encrypted=1 then@resultsp elseconvert(nvarchar(4000),casewhen@status&2=2then uncompress(@orgvarbin) else@orgvarbinend) end) print@resultsp set@n=@n+1 end end set@k=@k+1 end droptable #temp rollbacktran end