1
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_decrypt]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
2
drop procedure [dbo].[sp_decrypt]
3
GO
4![](/Images/OutliningIndicators/None.gif)
5
/*--破解函数,过程,触发器,视图.仅限于SQLSERVER2000
6![](/Images/OutliningIndicators/InBlock.gif)
7
--作者:J9988--*/
8
/*--调用示例
9![](/Images/OutliningIndicators/InBlock.gif)
10
--解密指定存储过程
11
exec sp_decrypt 'AppSP_test'
12![](/Images/OutliningIndicators/InBlock.gif)
13
--对所有的存储过程解密
14
declare tb cursor for
15
select name from sysobjects where xtype='P' and status>0 and name<>'sp_decrypt'
16
17
declare @name sysname
18
open tb
19
fetch next from tb into @name
20
while @@fetch_status=0
21
begin
22
print '/*-------存储过程 ['+@name+'] -----------*/'
23
exec sp_decrypt @name
24
fetch next from tb into @name
25
end
26
close tb
27
deallocate tb
28
--*/
29![](/Images/OutliningIndicators/None.gif)
30
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_DECRYPT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
31
drop procedure [dbo].[SP_DECRYPT]
32
GO
33![](/Images/OutliningIndicators/None.gif)
34
CREATE PROCEDURE sp_decrypt(@objectName varchar(50))
35
AS
36
begin
37
set nocount on
38
--CSDN:j9988 copyright:2004.04.15
39
--V3.1
40
--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
41
--修正上一版视图触发器不能正确解密错误
42
--发现有错,请E_MAIL:CSDNj9988@tom.com
43
begin tran
44
declare @objectname1 varchar(100),@orgvarbin varbinary(8000)
45
declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
46
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
47
declare @i int,@status int,@type varchar(10),@parentid int
48
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int
49
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)
50![](/Images/OutliningIndicators/None.gif)
51
create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
52
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)
53
select @number=max(number) from #temp
54
set @k=0
55![](/Images/OutliningIndicators/None.gif)
56
while @k<=@number
57
begin
58
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
59
begin
60
if @type='P'
61
set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
62
else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '
63
end)
64![](/Images/OutliningIndicators/None.gif)
65
if @type='TR'
66
begin
67
declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)
68
select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)
69
select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj
70
if @tr_parent_xtype='V'
71
begin
72
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 '
73
end
74
else
75
begin
76
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
77
end
78![](/Images/OutliningIndicators/None.gif)
79
end
80
if @type='FN' or @type='TF' or @type='IF'
81
set @sql1=(case @type when 'TF' then
82
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
83
when 'FN' then
84
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
85
when 'IF' then
86
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
87
end)
88![](/Images/OutliningIndicators/None.gif)
89
if @type='V'
90
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'
91![](/Images/OutliningIndicators/None.gif)
92
set @q=len(@sql1)
93
set @sql1=@sql1+REPLICATE('-',4000-@q)
94
select @sql2=REPLICATE('-',8000)
95
set @sql3='exec(@sql1'
96
select @colid=max(colid) from #temp where number=@k
97
set @n=1
98
while @n<=CEILING(1.0*(@colid-1)/2) and len(@sQL3)<=3996
99
begin
100
set @sql3=@sql3+'+@'
101
set @n=@n+1
102
end
103
set @sql3=@sql3+')'
104
exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2
105![](/Images/OutliningIndicators/None.gif)
106
end
107
set @k=@k+1
108
end
109![](/Images/OutliningIndicators/None.gif)
110
set @k=0
111
while @k<=@number
112
begin
113![](/Images/OutliningIndicators/None.gif)
114
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
115
begin
116
select @colid=max(colid) from #temp where number=@k
117
set @n=1
118![](/Images/OutliningIndicators/None.gif)
119
while @n<=@colid
120
begin
121
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k
122![](/Images/OutliningIndicators/None.gif)
123
SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k)
124
if @n=1
125
begin
126
if @type='P'
127
SET @OrigSpText2=(case when @number>1 then 'CREATE PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
128
else 'CREATE PROCEDURE '+ @objectName +' WITH ENCRYPTION AS '
129
end)
130![](/Images/OutliningIndicators/None.gif)
131![](/Images/OutliningIndicators/None.gif)
132
if @type='FN' or @type='TF' or @type='IF'
133
SET @OrigSpText2=(case @type when 'TF' then
134
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
135
when 'FN' then
136
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
137
when 'IF' then
138
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
139
end)
140![](/Images/OutliningIndicators/None.gif)
141
if @type='TR'
142
begin
143![](/Images/OutliningIndicators/None.gif)
144
if @tr_parent_xtype='V'
145
begin
146
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 '
147
end
148
else
149
begin
150
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
151
end
152![](/Images/OutliningIndicators/None.gif)
153
end
154![](/Images/OutliningIndicators/None.gif)
155
if @type='V'
156
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'
157![](/Images/OutliningIndicators/None.gif)
158
set @q=4000-len(@OrigSpText2)
159
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
160
end
161
else
162
begin
163
SET @OrigSpText2=REPLICATE('-', 4000)
164
end
165
SET @i=1
166![](/Images/OutliningIndicators/None.gif)
167
SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))
168![](/Images/OutliningIndicators/None.gif)
169
WHILE @i<=datalength(@OrigSpText1)/2
170
BEGIN
171![](/Images/OutliningIndicators/None.gif)
172
SET @resultsp = stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^
173
(UNICODE(substring(@OrigSpText2, @i, 1)) ^
174
UNICODE(substring(@OrigSpText3, @i, 1)))))
175
SET @i=@i+1
176
END
177
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))
178
set @resultsp=(case when @encrypted=1
179
then @resultsp
180
else convert(nvarchar(4000),case when @status&2=2 then uncompress(@orgvarbin) else @orgvarbin end)
181
end)
182
print @resultsp
183![](/Images/OutliningIndicators/None.gif)
184
set @n=@n+1
185![](/Images/OutliningIndicators/None.gif)
186
end
187![](/Images/OutliningIndicators/None.gif)
188
end
189
set @k=@k+1
190
end
191![](/Images/OutliningIndicators/None.gif)
192
drop table #temp
193
rollback tran
194
end
195![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)
71
![](/Images/OutliningIndicators/None.gif)
72
![](/Images/OutliningIndicators/None.gif)
73
![](/Images/OutliningIndicators/None.gif)
74
![](/Images/OutliningIndicators/None.gif)
75
![](/Images/OutliningIndicators/None.gif)
76
![](/Images/OutliningIndicators/None.gif)
77
![](/Images/OutliningIndicators/None.gif)
78
![](/Images/OutliningIndicators/None.gif)
79
![](/Images/OutliningIndicators/None.gif)
80
![](/Images/OutliningIndicators/None.gif)
81
![](/Images/OutliningIndicators/None.gif)
82
![](/Images/OutliningIndicators/None.gif)
83
![](/Images/OutliningIndicators/None.gif)
84
![](/Images/OutliningIndicators/None.gif)
85
![](/Images/OutliningIndicators/None.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/None.gif)
88
![](/Images/OutliningIndicators/None.gif)
89
![](/Images/OutliningIndicators/None.gif)
90
![](/Images/OutliningIndicators/None.gif)
91
![](/Images/OutliningIndicators/None.gif)
92
![](/Images/OutliningIndicators/None.gif)
93
![](/Images/OutliningIndicators/None.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/None.gif)
96
![](/Images/OutliningIndicators/None.gif)
97
![](/Images/OutliningIndicators/None.gif)
98
![](/Images/OutliningIndicators/None.gif)
99
![](/Images/OutliningIndicators/None.gif)
100
![](/Images/OutliningIndicators/None.gif)
101
![](/Images/OutliningIndicators/None.gif)
102
![](/Images/OutliningIndicators/None.gif)
103
![](/Images/OutliningIndicators/None.gif)
104
![](/Images/OutliningIndicators/None.gif)
105
![](/Images/OutliningIndicators/None.gif)
106
![](/Images/OutliningIndicators/None.gif)
107
![](/Images/OutliningIndicators/None.gif)
108
![](/Images/OutliningIndicators/None.gif)
109
![](/Images/OutliningIndicators/None.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/None.gif)
113
![](/Images/OutliningIndicators/None.gif)
114
![](/Images/OutliningIndicators/None.gif)
115
![](/Images/OutliningIndicators/None.gif)
116
![](/Images/OutliningIndicators/None.gif)
117
![](/Images/OutliningIndicators/None.gif)
118
![](/Images/OutliningIndicators/None.gif)
119
![](/Images/OutliningIndicators/None.gif)
120
![](/Images/OutliningIndicators/None.gif)
121
![](/Images/OutliningIndicators/None.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)
167
![](/Images/OutliningIndicators/None.gif)
168
![](/Images/OutliningIndicators/None.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)