一尘不染

如何查看加密视图或存储过程

sql-server

我正在研究第三方数据库。

当我尝试通过右键单击查看视图的定义,CREATE TO然后单击 ,NEW QUERY EDIT WINDOW我收到一个错误:

This property may not exist for this object or may not be retrievable due to insufficient access rights. The text is encrypted.


阅读 101

收藏
2022-11-11

共1个答案

一尘不染

简而言之,对象并没有真正加密,而是被混淆了。因此我们可以找回原来的回来。该方法有点复杂,但它由以下步骤组成:

  1. 使用专用管理员连接连接到实例

  2. 选择这样的混淆代码:

sql SELECT @secret = imageval FROM sys.sysobjvalues WHERE objid = OBJECT_ID(@object_name);

  1. 将对象替换为另一个具有相同名称、相同 object_id 和相同长度(以字节为单位)的对象(例如使用ALTER PROCEDURE

  2. 以与上面相同的方式获取新混淆的代码

  3. 将三个值异或在一起(混淆原始、替换和混淆替换)

这将为您提供原始代码。但是,正如 Kin 所提到的,这样做可能会产生支持甚至法律影响,因此请务必先咨询您的律师。

2022-11-11