• Sql存储过程解密方法


    在网上查到这样一个存储过程解密的方法,用起来简单,收藏到这里:

     1 CREATE     PROCEDURE   sp_decrypt_sp   (@objectName   varchar(50))  
     2   AS  
     3   ------------------------sql2000大于40000的-----------------  
     4   --原作:j9988   号:J老师  
     5    
     6   begin   tran  
     7   begin  
     8   declare   @objectname1   varchar(100)  
     9   declare   @sql1   nvarchar(4000),@sql2   nvarchar(4000),@sql3   nvarchar(4000),@sql4   nvarchar(4000),@sql5   nvarchar(4000),@sql6   nvarchar(4000),@sql7   nvarchar(4000),@sql8   nvarchar(4000),@sql9   nvarchar(4000),@sql10   nvarchar(4000)      
    10   DECLARE     @OrigSpText1   nvarchar(4000),     @OrigSpText2   nvarchar(4000)   ,   @OrigSpText3   nvarchar(4000),   @resultsp   nvarchar(4000)  
    11   declare     @i   int   ,   @t   bigint  
    12   declare   @m   int,@n   int,@q   int  
    13   set   @m=(SELECT   max(colid)   FROM   syscomments     WHERE   id   =   object_id(@objectName))  
    14   set   @n=1  
    15   --get   encrypted   data  
    16   create   table     #temp(colid   int,ctext   varbinary(8000))  
    17   insert   #temp   SELECT   colid,ctext   FROM   syscomments     WHERE   id   =   object_id(@objectName)  
    18   set   @sql1='ALTER   PROCEDURE   '+   @objectName   +'   WITH   ENCRYPTION   AS   '  
    19   --set   @sql1='ALTER   PROCEDURE   '+   @objectName   +'   WITH   ENCRYPTION   AS   '  
    20   set   @q=len(@sql1)  
    21   set   @sql1=@sql1+REPLICATE('-',4000-@q)  
    22   select   @sql2=REPLICATE('-',4000),@sql3=REPLICATE('-',4000),@sql4=REPLICATE('-',4000),@sql5=REPLICATE('-',4000),@sql6=REPLICATE('-',4000),@sql7=REPLICATE('-',4000),@sql8=REPLICATE('-',4000),@sql9=REPLICATE('-',4000),@sql10=REPLICATE('-',4000)  
    23   exec(@sql1+@sql2+@sql3+@sql4+@sql5+@sql6+@sql7+@sql8+@sql9+@sql10)  
    24   while   @n<=@m  
    25   begin  
    26   SET   @OrigSpText1=(SELECT   ctext   FROM   #temp     WHERE   colid=@n)  
    27   set   @objectname1=@objectname+'_t'  
    28   SET   @OrigSpText3=(SELECT   ctext   FROM   syscomments   WHERE   id=object_id(@objectName)   and   colid=@n)  
    29   if   @n=1  
    30   begin  
    31   SET   @OrigSpText2='CREATE   PROCEDURE   '+   @objectName   +'   WITH   ENCRYPTION   AS   '--  
    32   set   @q=4000-len(@OrigSpText2)  
    33   set   @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)  
    34   end  
    35   else  
    36   begin  
    37   SET   @OrigSpText2=REPLICATE('-',   4000)  
    38   end  
    39   --start   counter  
    40   SET   @i=1  
    41   --fill   temporary   variable  
    42   SET   @resultsp   =   replicate(N'A',   (datalength(@OrigSpText1)   /   2))  
    43    
    44   --loop  
    45   WHILE   @i<=datalength(@OrigSpText1)/2  
    46   BEGIN  
    47   --reverse   encryption   (XOR   original+bogus+bogus   encrypted)  
    48   SET   @resultsp   =   stuff(@resultsp,   @i,   1,   NCHAR(UNICODE(substring(@OrigSpText1,   @i,   1))   ^  
    49                                                                   (UNICODE(substring(@OrigSpText2,   @i,   1))   ^  
    50                                                                   UNICODE(substring(@OrigSpText3,   @i,   1)))))  
    51           SET   @i=@i+1  
    52   END  
    53   --drop   original   SP  
    54   --EXECUTE   ('drop   PROCEDURE   '+   @objectName)  
    55   --remove   encryption  
    56   --preserve   case  
    57   SET   @resultsp=REPLACE((@resultsp),'WITH   ENCRYPTION',   '')  
    58   SET   @resultsp=REPLACE((@resultsp),'With   Encryption',   '')  
    59   SET   @resultsp=REPLACE((@resultsp),'with   encryption',   '')  
    60   IF   CHARINDEX('WITH   ENCRYPTION',UPPER(@resultsp)   )>0    
    61       SET   @resultsp=REPLACE(UPPER(@resultsp),'WITH   ENCRYPTION',   '')  
    62   --replace   Stored   procedure   without   enryption  
    63   print   @resultsp  
    64   --execute(   @resultsp)  
    65   set   @n=@n+1  
    66   end  
    67   drop   table   #temp  
    68   end  
    69   rollback   tran  
    70   --适合40000字符。  
    71   --每次4000 print出来,自已贴。  
    72   --切记:我见过的解过程都是对原过程进行破坏。破解前一定要备份!!!!  
    73   --超过40000的,自已加SQL(我上面用SQL.SQL2--SQL10)  
    74   --超长的可加SQL11--sql20........  
    75    
    76    
    77   GO
  • 相关阅读:
    Android模拟器中访问局域网地址
    wifidirect
    asp.net上传图片自动生成缩略图功能代码
    Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制
    最简单的三层实例【插入据
    使用RGBa和Filter实现不影响子元素的CSS透明背景
    Jquery ui widget开发
    SQL优化
    SQL SERVER 数据类型
    SQL Server数据库查询速度慢的原因
  • 原文地址:https://www.cnblogs.com/Chaser-Eagle/p/3684864.html
Copyright © 2020-2023  润新知