CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

存储过程被加密了,咋办???急

楼主hedale(又喝大了)2003-10-01 11:38:45 在 MS-SQL Server / 应用实例 提问

我有个sqlserver   数据库,我发现里面的存储过程被加密了,我想了多种办法,可是,只能揭开其中的一部分,下载了一个软件,只能解前面的一部分,他让我注册,各位有谁有好的办法,和好的软件??? 问题点数:0、回复次数:6Top

1 楼zarge(鲨去来兮)回复于 2003-10-01 12:21:14 得分 0

 
  ------------------------sql2000大于40000的-----------------  
  原作:j9988   号:J老师  
  create     PROCEDURE   sp_decrypt_sp   (@objectName   varchar(50))  
  AS  
  begin  
  declare   @objectname1   varchar(100)  
  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   ,   @t   bigint  
  declare   @m   int,@n   int,@q   int  
  set   @m=(SELECT   max(colid)   FROM   syscomments     WHERE   id   =   object_id(@objectName))  
  set   @n=1  
  --get   encrypted   data  
  create   table     #temp(colid   int,ctext   varbinary(8000))  
  insert   #temp   SELECT   colid,ctext   FROM   syscomments     WHERE   id   =   object_id(@objectName)  
  set   @sql1='ALTER   PROCEDURE   '+   @objectName   +'   WITH   ENCRYPTION   AS   '  
  --set   @sql1='ALTER   PROCEDURE   '+   @objectName   +'   WITH   ENCRYPTION   AS   '  
  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)  
  while   @n<=@m  
  begin  
  SET   @OrigSpText1=(SELECT   ctext   FROM   #temp     WHERE   colid=@n)  
  set   @objectname1=@objectname+'_t'  
  SET   @OrigSpText3=(SELECT   ctext   FROM   syscomments   WHERE   id=object_id(@objectName)   and   colid=@n)  
  if   @n=1  
  begin  
  SET   @OrigSpText2='CREATE   PROCEDURE   '+   @objectName   +'   WITH   ENCRYPTION   AS   '--  
  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  
  --reverse   encryption   (XOR   original+bogus+bogus   encrypted)  
  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  
  --drop   original   SP  
  --EXECUTE   ('drop   PROCEDURE   '+   @objectName)  
  --remove   encryption  
  --preserve   case  
  SET   @resultsp=REPLACE((@resultsp),'WITH   ENCRYPTION',   '')  
  SET   @resultsp=REPLACE((@resultsp),'With   Encryption',   '')  
  SET   @resultsp=REPLACE((@resultsp),'with   encryption',   '')  
  IF   CHARINDEX('WITH   ENCRYPTION',UPPER(@resultsp)   )>0    
      SET   @resultsp=REPLACE(UPPER(@resultsp),'WITH   ENCRYPTION',   '')  
  --replace   Stored   procedure   without   enryption  
  print   @resultsp  
  --execute(   @resultsp)  
  set   @n=@n+1  
  end  
  drop   table   #temp  
  end  
  GO  
   
  适合40000字符。  
  每次4000 print出来,自已贴。  
  切记:我见过的解过程都是对原过程进行破坏。破解前一定要备份!!!!  
  超过40000的,自已加SQL(我上面用SQL.SQL2--SQL10)  
  超长的可加SQL11--sql20........  
  Top

2 楼txlicenhe(马可)回复于 2003-10-02 09:39:14 得分 0

就用蒋老师的这个,注意破解前一定要备份。Top

3 楼zjcxc(邹建)回复于 2003-10-02 09:49:29 得分 0

最好用软件吧,这样安全简单  
   
  推荐:  
  SQLExplorerTop

4 楼zjcxc(邹建)回复于 2003-10-02 09:52:00 得分 0

如果找不到,可以发Email到:zjcxc@21cn.com,我发给你.Top

5 楼crystal_heart(笑看风云)回复于 2003-10-02 10:30:45 得分 0

upTop

6 楼welyngj(无爱)回复于 2003-10-02 15:39:35 得分 0

推荐使用sql   explorerTop

相关问题

  • 存储过程加密后,如何解开?急急急!!!!
  • 急!如何加密Sybase的存储过程和触发器
  • 如何加密MSSQL SERVER 2000中的存储过程?急切
  • 如何破解加密过的Oracle存储过程....火急
  • 存储过程加密
  • 存储过程加密?
  • 急~~!存储过程。
  • 存储过程!!!急!!
  • 存储过程,急?
  • 存储过程,急。

关键词

  • 软件
  • sql
  • nvarchar
  • resultsp
  • objectname
  • origsptext
  • colid
  • encryption
  • procedure
  • declare

得分解答快速导航

  • 帖主:hedale

相关链接

  • SQL Server类图书

广告也精彩

反馈

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