CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

确解加密的触发器

楼主galaxypilot(舵手)2003-11-01 12:28:47 在 MS-SQL Server / 基础类 提问

SQL   SERVER的存储过程可以破解,我试着修改了一下来破解触发器,但不能成功,本来那个用来破解的存储过程看我也太懂,又不明白SQL   SERVER的加密过程,请高手指点。 问题点数:100、回复次数:6Top

1 楼pengdali()回复于 2003-11-01 12:30:59 得分 100

http://expert.csdn.net/Expert/TopicView1.asp?id=2372581Top

2 楼pengdali()回复于 2003-11-01 12:31:12 得分 0

J9988原创!!!!!!!!!Top

3 楼txlicenhe(马可)回复于 2003-11-01 12:31:32 得分 0

http://expert.csdn.net/Expert/topic/2372/2372581.xml?temp=.2526514  
  破解被with   encryption   加密的函数,视图,触发器,存储过程    
  作  者:     j9988   (j9988)Top

4 楼pengdali()回复于 2003-11-01 12:32:00 得分 0

----------------------------------------------------------------  
  --------------------------解密完全版-------------------------------------  
  ----------------------------------------------------------  
  ---原作:j9988   号:J老师    
  create     PROCEDURE   sp_decrypt(@objectName   varchar(50))  
  AS  
  /*****************  
        -----------此解密函数由CSDN   SQLServer版J9988老师原创--------  
  ******************/  
  begin  
  declare   @objectname1   varchar(100),@orgvarbin   varbinary(8000)  
  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)      
  DECLARE     @OrigSpText1   nvarchar(4000),     @OrigSpText2   nvarchar(4000)   ,   @OrigSpText3   nvarchar(4000),   @resultsp   nvarchar(4000)  
  declare     @i   int,@status   int,@type   varchar(10),@parentid   int  
  declare   @colid   int,@n   int,@q   int,@j   int,@k   int,@encrypted   int,@number   int  
  select   @type=xtype,@parentid=parent_obj   from   sysobjects   where   id=object_id(@ObjectName)  
   
  create   table     #temp(number   int,colid   int,ctext   varbinary(8000),encrypted   int,status   int)  
  insert   #temp   SELECT   number,colid,ctext,encrypted,status   FROM   syscomments     WHERE   id   =   object_id(@objectName)  
  select   @number=max(number)   from   #temp  
  set   @k=0  
   
  while   @k<=@number    
  begin  
  if   exists(select   1   from   syscomments   where   id=object_id(@objectname)   and   number=@k)  
  begin  
  if   @type='P'  
  set   @sql1=(case   when   @number>1   then   'ALTER   PROCEDURE   '+   @objectName   +';'+rtrim(@k)+'   WITH   ENCRYPTION   AS   '  
                                                      else   'ALTER   PROCEDURE   '+   @objectName+'   WITH   ENCRYPTION   AS   '  
                                                      end)  
   
  if   @type='TR'  
  set   @sql1='ALTER   TRIGGER   '+@objectname+'   ON   '+OBJECT_NAME(@parentid)+'   WITH   ENCRYPTION   FOR   INSERT   AS   PRINT   1   '  
   
  if   @type='FN'   or   @type='TF'   or   @type='IF'  
  set   @sql1=(case   @type   when   '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   '  
   
  set   @q=len(@sql1)  
  set   @sql1=@sql1+REPLICATE('-',4000-@q)  
  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)  
  exec(@sql1+@sql2+@sql3+@sql4+@sql5+@sql6+@sql7+@sql8+@sql9+@sql10)  
  end  
  set   @k=@k+1  
  end  
   
  set   @k=0  
  while   @k<=@number    
  begin  
   
  if   exists(select   1   from   syscomments   where   id=object_id(@objectname)   and   number=@k)  
  begin  
  select   @colid=max(colid)   from   #temp   where   number=@k    
  set   @n=1  
   
  while   @n<=@colid  
  begin  
  select   @OrigSpText1=ctext,@encrypted=encrypted,@status=status   FROM   #temp     WHERE   colid=@n   and   number=@k  
   
  SET   @OrigSpText3=(SELECT   ctext   FROM   syscomments   WHERE   id=object_id(@objectName)   and   colid=@n   and   number=@k)  
  if   @n=1  
  begin  
  if   @type='P'  
  SET   @OrigSpText2=(case   when   @number>1   then   '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   @type   when   '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'  
  set   @OrigSpText2='CREATE   TRIGGER   '+@objectname+'   ON   '+OBJECT_NAME(@parentid)+'   WITH   ENCRYPTION   FOR   INSERT   AS   PRINT   1   '  
   
  if   @type='V'  
  set   @OrigSpText2='CREATE   VIEW   '+@objectname+'   WITH   ENCRYPTION   AS   SELECT   1   '  
   
  set   @q=4000-len(@OrigSpText2)  
  set   @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)  
  end  
  else  
  begin  
  SET   @OrigSpText2=REPLICATE('-',   4000)  
  end  
  --start   counter  
  SET   @i=1  
  --fill   temporary   variable  
  SET   @resultsp   =   replicate(N'A',   (datalength(@OrigSpText1)   /   2))  
   
  --loop  
  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(@OrigSpText1   as   varbinary(8000))  
  set   @resultsp=(case   when   @encrypted=1    
                                          then   @resultsp    
                                          else   convert(nvarchar(4000),case   when   @status&2=2   then   uncompress(@orgvarbin)   else   @orgvarbin   end)  
                                end)  
  print   @resultsp  
  --execute(   @resultsp)  
  set   @n=@n+1  
   
  end  
   
  end  
  set   @k=@k+1  
  end  
   
  drop   table   #temp  
  end  
  Top

5 楼galaxypilot(舵手)回复于 2003-11-01 13:39:35 得分 0

谁能解释一个加密过程,别开贴给分也行。Top

6 楼pengdali()回复于 2003-11-01 13:44:51 得分 0

你发消息给J9988老师,他是原作。Top

相关问题

  • 触发器重新确认
  • 存储过程、触发器、表结构加密后 用什么方法或什么软件能破解呢?
  • 急!如何加密Sybase的存储过程和触发器
  • 请专家:急关于SQL存储过、触发器加密??
  • 这样的触发器正确吗??
  • 取触发器名字的确问题
  • 如何理解行级触发器
  • 谁能解决这个触发器
  • 触发器问题,高分求解
  • 不理解触发器.何时用?

关键词

  • .net
  • 破解
  • 存储过程
  • csdn
  • sql
  • 触发器
  • j9988
  • nvarchar
  • origsptext
  • expert

得分解答快速导航

  • 帖主:galaxypilot
  • pengdali

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo