SQL server 2008中有个触发器被加密,怎么破解触发器?
发布网友
发布时间:2022-04-11 18:31
我来回答
共1个回答
热心网友
时间:2022-04-11 20:01
J老板写的解密存储过程的代码,把其中的procere 通通替换成 trigger,然后试试看
记得要备份
------------------------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 procere 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........
祝你好运!
另:还有个工具,以前用过收藏的,不知道2008管用不,地址如下:
sql server 2008中存储过程怎么解密
--提取对象的类型如是存储过程还是函数,如果是触发器,还要得到其父对象的名称select @objtype=type,@parentname=object_name(parent_object_id)from sys.objects where [object_id]=object_id(@procedure)-- 从sys.sysobjvalues里提出加密的imageval记录SET @real_01=(SELECT top 1 imageval FROM sys.sysobjva...
如何绕过SQL Server登录触发器限制
1.使用SSMS以sysadmin身份登录到新的SQL Server实例。2.首先,让我们使用以下命令来获取连接到SQL server实例的主机名。默认情况下,它将向我们返回连接到SQL Server实例的工作站的主机名。SELECT HOST_NAME()3.创建一个仅允许白名单主机名连接的登录触发器。并按照下图所示执行该触发器。-- Create our ...
如何用SQL语句删除 SQL Server 中的触发器
exec sp_helptext '触发器名'--删除触发器:基本语句如下:drop trigger trigger_name
sql server 2008怎么停止触发器
-- 查看数据库已有触发器use yourdatabasegoselect * from sysobjects where xtype='TR'-- 查看单个触发器exec sp_helptext '触发器名'--删除触发器:基本语句如下:drop trigger trigger_name
关于SQL SERVER 2000,一个表的触发器被加密
触发器有一个Encryption选项,把这个选项改成false,就可以查看代码了。
SQL SERVER如何应用DLL触发器
1、首先打开SQL SERVER 2008数据库管理工具,然后选择服务器,选择Windows身份验证进行连接,如下图所示 2、进入管理工具以后,定位要操作的数据库,然后点击新建查询,如下图所示 3、在新建查询界面中,通过create trigger语句创建DLL触发器,当进行数据库删除和修改的时候进行触发,如下图所示 4、语句编写...
sql server 2008 触发器代码执行过程,发现错误怎么终止执行,不再执行...
不会做后面的工作,而且前面的事务也应该一起回滚了。楼上说的那个是抓住错误类型。在这里没用。如果你想抓的话,我建议你用print,每个begin和end之间写上一个特殊的内容,每次都用print显示出来了,这样到了你那个错误的位置的时候,你就能明显看到了。至少在显示的前后就是了。祝你好运。
sql2008 怎么调试触发器
在项目中,单击右键选择"添加"->"触发器",代码如下(validateyear.cs):using system;using system.data;using system.data.sqlclient;using microsoft.sqlserver.server;public partial class triggers { // 为目标输入现有表或视图并取消对特性行的注释 [microsoft.sqlserver.server.sqltrigger (name="...
sql server 2008的触发器:以下是一个触发器,请问以下代码中的if Update...
UPDATE 返回一个布尔值,指示是否对表或视图的指定列进行了 INSERT 或 UPDATE 尝试。可以在 Transact-SQL INSERT 或 UPDATE 触发器主体中的任意位置使用 UPDATE(),以测试触发器是否应执行某些操作。对于你的触发器.如果 UPDATE Student SET StudentID = ... WHERE ...那么, 这个时候 U...
SQL触发器SQL触发器语法
SQL触发器是数据库中的一种机制,通过特定的SQL语句定义,用于在特定的数据修改操作(INSERT、DELETE、UPDATE)后自动执行特定的操作。触发器名称需唯一,符合标识符规则,可以使用WITH ENCRYPTION加密并设置NOT FOR REPLICATION防止复制过程中的触发。触发器通常包含Transact-SQL语句,用于检查或修改数据,但不会...