PL/SQL解包器指南

283 阅读6分钟

PL/SQL Unwrapper

PL/SQL解包器的定义

PL/SQL为用户提供了不同种类的功能,其中解包器是由PL/SQL提供的功能之一。有时我们需要从最终用户那里隐藏代码,所以SQL开发人员会对代码进行包装,这意味着由于安全原因它对用户隐藏了功能。在有些情况下,你希望检查被包裹的PL/SQL包、技术或能力的源泉。通过使用PL/SQL解包器,我们可以很容易地找出迁移错误,或者可以说,与其他过程相比,我们可以更快地找到根本原因。

语法。

exec unwrap_r(‘specified sql file name’);

解释

在上面的例子中,我们使用exec unwrap_r命令来解除对PL/SQL存储过程的包装。之后,在括号内,我们需要写上PL/SQL文件名,或者我们可以说是实际的文件名。

Unwrapper是如何在PL/SQL中工作的?

现在让我们看看解包器是如何在PL/SQL中工作的,如下所示。

在10g中,合理的内容PL/SQL是以一种伴随的方式被扰乱的。首先利用Lempel-Ziv计算对内容进行压缩,并从打包的信息中产生一个SHA1哈希值。然后,这个哈希值被复制到一个摇篮中,打包的信息被尽可能地连接起来。然后,在这一点上,支持中的每一个字节的价值被用作一个人的替换表的记录。这个表很可能被看作是甲骨文的专有优势,所以我们将避免在这里发布它--至少,在任何情况下,它都很容易被发现。随后的代码文本被base64编码。打开加扰的代码则相反。首先,它的base64被解码了。然后,在这一点上,每一口都是用第二个相关的替换表来重组的。最后,内容被解压缩,留下PL/SQL的合理内容。

Oracle 9i和之前的版本利用了一种完全不同于10g的技术来包装PL/SQL。你以前看到过,PL/SQL的基础是ADA。当代码被9i封装时,它被改变为DIANA,这代表了ADA的描述性中间属性符号。DIANA的计划目标之一是,它将持有第一个源的建设,并且完全可逆。在任何情况下,由于开放和排除故障的措施对于PL/SQL捆绑程序的进展来说仍然有些尴尬,所以问题就来了:"如果我们在SQL Developer中直接开放PL/SQL捆绑程序,不是很愉快吗?"对这个问题的回答是肯定的。

例子

现在让我们来看看PL/SQL中解包的不同例子,以便更好地理解以下内容。首先,我们需要创建过程文件,这意味着我们需要一个.sql扩展文件,如下所示。

CREATE OR REPLACE FUNCTION W_SUM(P_INT1 PLS_INTEGER, P_INT2 PLS_INTEGER) RETURN NUMBER IS BEGIN RETURN P_INT1 + P_INT2; END; /

解释

在上面的例子中,我们试图创建一个函数来做两个数字的加法。在这里,我们用整数数据类型初始化了两个变量,例如P_INT1和P_INT2的整数数据类型,如上面存储过程中所示。之后,我们做两个数字的加法,并返回数字的总和。这里我们创建了一个非常简单的函数。上述PL/SQL函数的最终结果我们通过使用下面的截图来说明,如下所示。

PL SQL Unwrapper 1

PL/SQL成功执行,现在将这个过程保存在系统位置上,扩展名为.sql的文件,如下图所示。

PL SQL Unwrapper 2

现在通过使用下面的命令来包住这个文件。

首先,我们需要搜索文件的位置。之后,我们需要执行下面的语句,如下所示。

warp iname=sum_wra.sql

解释

在上面的例子中,我们用wrap命令加上name关键字,如图所示,之后我们需要写下我们需要包裹的文件名。上述命令的最终结果,我们用下面的截图来说明。

PL SQL Unwrapper 3

让我们看看上面的截图,在wrap命令之后,它创建了一个新的对象文件,即sum_wra.plb,如所示。如下面的截图所示,如下。

PL SQL Unwrapper 4

在创建了对象文件之后,现在我们能够看到如下的wrap代码。

CREATE OR REPLACE FUNCTION W_SUM wrapped a000000 b2 abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd 8 6b 8d d/suNDJVKFD2pnITc040umb3WyQwg8eZgcfLCNL+XufQKMuBPefj/tKZf8Pnpb05f3FVTNb1 jt3gYIXg7HE14qhrNT+eP2u83OI1cUGvcdziuUE/fDhNPoNpOzxx4j/RPHSmDB92Jg== /

解释

在上面的包装代码中,我们只能看到函数名称,这意味着我们向用户隐藏了函数的实际数据代码。这段缠绕代码我们是按照我们的要求执行的,唯一不同的是,在这里用户不能与代码互动,它只显示输出,也就是我们将得到的预期结果,而不做任何改变。
现在让我们看看如何解除这段缠绕代码,如下所示。
基本上,有两种方法可以解除这段代码,如下所示。

1.首先,我们只需要在我们的代码中点击右键,然后点击解包命令。对于这个命令,首先,我们需要在我们的oracle SQL developer上安装PL/SQL unwrapper包。
右键点击后,显示出unwrap命令,如下图所示,如下。

output

现在只需点击解包命令。解包命令的最终结果显示在下面的屏幕截图中,如下图所示。

output 1

2.其次,我们可以直接使用在线工具来解开代码。这里我们将看到如何通过使用在线工具来解开代码,如下所示。
在在线工具中,我们需要复制被包裹的代码并点击解开按钮。在完成执行后,它显示的结果如下面的截图所示。

output 2

总结

我们希望通过这篇文章你能学会PL/SQL解包器。从上面的文章中,我们已经学会了解包的基本语法,我们也看到了解包的不同例子。从这篇文章中,我们了解了如何以及何时使用PL/SQL解包器。

推荐文章

这是一篇关于PL/SQL解包器的指南。这里我们讨论了定义、语法、解包器在PL/SQL中如何工作?例子,以及代码实现。你也可以看看下面的文章来了解更多

  1. PL/Sql分组
  2. PL/SQL to_DATE
  3. PL/SQL游标循环
  4. PL/SQL日期函数

The postPL/SQL Unwrapperappeared first onEDUCBA.