How to Wrap and Obfuscate Oracle PL/SQL Procedures

Hide and protect PL/SQL source code

If you’re working with Oracle PL/SQL and want to protect your code from being easily read or altered, wrapping your procedures is a great way to obfuscate your source code. This process ensures that even if someone gains access to your database scripts, the code will be unreadable. Here’s a straightforward guide to wrapping your PL/SQL procedures.

Step 1: Create Your PL/SQL Procedures

Start by writing your PL/SQL procedures. Here’s an example with two procedures named procedure_one and procedure_two:

CREATE OR REPLACE PROCEDURE procedure_one (
param1 IN VARCHAR2,
param2 IN NUMBER
) AS
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Executing procedure_one’);
— Your logic here
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘Error in procedure_one: ‘ || SQLERRM);
RAISE;
END procedure_one;
/

CREATE OR REPLACE PROCEDURE procedure_two (
param1 IN VARCHAR2,
param2 IN NUMBER
) AS
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Executing procedure_two’);
— Your logic here
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘Error in procedure_two: ‘ || SQLERRM);
RAISE;
END procedure_two;
/

Save these procedures in a file called procedures.sql.

Step 2: Wrap the PL/SQL Code

Oracle provides a wrap utility that converts your PL/SQL code into an obfuscated format. Here’s how you can use this utility:

wrap iname=procedures.sql oname=procedures.plb

  • iname specifies the input file containing your original PL/SQL code.
  • oname specifies the output file where the obfuscated code will be saved.

Step 3: Deploy the Wrapped Code

The wrapping process will generate a file named procedures.plb containing the obfuscated code. To deploy this file to your Oracle database, you can execute:

@procedures.plb

Example of Wrapped Code

After wrapping, the code becomes obfuscated. Here’s an example of what wrapped PL/SQL might look like:

CREATE OR REPLACE PROCEDURE procedure_one wrapped
a000000
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd

Note: you are never rollback the source code once it’s wrapped. So you maintain the source code yourself for future use or modifications.

This entry was posted in Oracle on by .
Unknown's avatar

About SandeepSingh

Hi, I am working in IT industry with having more than 15 year of experience, worked as an Oracle DBA with a Company and handling different databases like Oracle, SQL Server , DB2 etc Worked as a Development and Database Administrator.

Leave a Reply