Oracle10g unwrap技术分析 By GENXOR

 

一. 前言

Oracle为PL/SQL开发者提供的一种对他们所写的代码(oracle下的对象Package、Procedure、Function、Java Source等)进行加密的工具。当PL/SQL代码被加密以后,它就被描述为被“包装过”。使用wrap工具对代码进行包装,wrap工具会取出含有要包装的代码的文件名并输出下面的文件:

wrap iname=plain.sql oname=encrypted.plb

因为代码被加密了,所以其细节被隐藏了,而且Oracle不提供解包装设备。但是我们可以编写我们自己的unwrap程序。

二. 对象加密

Oracle为了防止自己的对象程序源码泄露,也对其做了wrap处理。因为许多PACKAGE、PROCEDURE等程序本身可能存在SQL注入漏洞,但是如果得不到源码,对其进行审计是很困难的。这样wrap在一定程度上也起到了保护作用。

这里随便找一个Oracle的PACKAGE为实例,这里我们找到dbms_hs包程序,其代码如图所示: